If else in Jquery


If else in Jquery

我是一个jquery新手,我想知道如何使用如果否则:

在服务器端有如果表示行数等于0和else一些JSON部分。

$age= mysql_query("SELECT title FROM parent WHERE id ='$name'");
$age_num_rows = mysql_num_rows($age);   
  if ($age_num_rows==0) 
  {
   echo "true";  
  }
  else
  {
$sql ="SELECT * FROM parentid WHERE id = '$name'"; //$name is value from html      
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
     {
$abc_output = array('title' => $row['title'],'age' => $row['age']);
     }
echo json_encode($abc_output);
  }

现在进入Jquery部分:

如果上面的PHP代码去如果部分,那么我想显示一个警告框,或者如果它去其他部分,它需要插入一些值到表单。这是我尝试过的东西,但它没有工作。

   $(document).ready(function(){  
      $("#button1").click(function(){
        $.getJSON('script_1.php',function(data){
            if (data=='true') {
                 alert ('hello')
            }
            else {
                $.post('script_1.php', 
                    { id: $('input[name="id"]', '#myForm').val() }, 
                    function(json) { 
                        $("input[name='title']").val(json.title);
                        $("input[name='age']").val(json.age); 
                    }, 
                    "json");  
            }
      });
  });  

:

  $(document).ready(function(){  
$("#button1").click(function(){
    $.post(
        'script.php',
        { id: $('input[name="id"]', '#myForm').val() },
        function(json) { 
            var data = JSON.parse(json);
            if (data.length === 0){
             alert('no data');   
            }
            else{
            $("input[name='title']").val(json.title);
                    $("input[name='age']").val(json.age); 
            }},
        "json"
    );
});
});

PHP的一面

$name = mysql_real_escape_string($_POST['id']); 
$sql ="SELECT * FROM parentid WHERE id = '$name'";       
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if ($row) {
$row=  array('title' => $row['title'],'age' => $row['age']);
echo json_encode($row);
} else {
echo json_encode(array());
}

在这样使用JSON之前需要解析它。现代浏览器将内置对JSON.parse(yourJSON)的支持,但要考虑到那些不支持的浏览器,您应该使用Douglas Crockford的JavaScript JSON库。包括它将提供JSON.parse()如果浏览器还没有它。

对于PHP中的if-else操作,通常的做法是回显一个空JSON对象或数组,这样您就不必在服务器端测试诸如无行之类的事情。您可以做如下简单的事情,稍后对数据库列名进行记帐:

$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
if ($row) {
  echo json_encode($row);
} else {
  echo json_encode(array());
}

在JavaScript中,你可以这样做:

var data = JSON.parse(json);
if (data.length === 0) {
  alert('no data');
} else {
  $("input[name='title']").val(data.title);
  $("input[name='age']").val(data.age);
}

jeroen是对的,你只需要使用一个AJAX调用。

似乎有几个问题:

  1. 您正在处理从getJSON返回的数据,如果它是普通的文本
  2. 你从javascript调用的php并不总是返回json
  3. 你正在做两个ajax请求;getJSONpost,你只需要一个:第一次调用getJSON没有任何数据将永远不会达到else条件

顺便说一下,$name从哪里来在你的php脚本?对于第二个ajax调用,如果它是整数,则需要是mysql_real_escape_string($_POST['id'])(int) $_POST['id']之类的东西。

编辑:我认为这将是最容易摆脱.post,只是使用第一个ajax调用。所以你需要修改:

$.getJSON('script_1.php',function(data){

转换成:

$.getJSON('script_1.php?id=' + $('input[name="id"]').val(), function(data) {

在PHP中,你需要这样写:

$name = mysql_real_escape_string($_GET['id']);