2011-08-18 80 views
1

我是一个菜鸟到jQuery和我想知道如何使用,如果其他的为以下几点:如果其他jQuery的

在服务器端有一个如果的行数等于0和其他一些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()); 
} 
+0

当你说这没有工作,你看到了什么? – GBa

+2

“如果其他循环”? ' – feeela

+1

I;'json_encode(真):回声应该读 - 你的意思就是所谓的条件,而不是一个循环什么...你也不会从'如果($ age_num_rows == 0)'内返回JSON数据认为'data =='yes''应该是'data =='true''看你的PHP代码。除此之外,什么“不起作用”? – Kokos

回答

2

似乎有是几个问题:

  1. 您处理数据从getJSON返回如果是纯文本
  2. ,你是从JavaScript调用PHP不总是 返回JSON
  3. 你正在做2个Ajax请求; getJSONpost,你只需要一个:到getJSON第一个电话,没有任何数据不会到达else条件

顺便说一句,来自哪里你的PHP脚本$name?对于你的第二个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']); 
+0

的thankss第三点,你说的是problem..how我可以实现上述使用1个Ajax请求使用...一小段代码,将不胜感激.. –

+0

为$的名称来自html ...我没有包括上面的代码在这里提到的语法,但它实际上是在原来的PHP .. –

+0

@约翰看到我的编辑。 – jeroen

3

您需要解析JSON你可以像那样使用它。现代浏览器将支持JSON.parse(yourJSON),但为了解决那些不支持的问题,您应该使用Douglas Crockford's JavaScript JSON library。如果浏览器没有它,它将提供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调用。

+0

嘿查尔斯...我所做的修改。如你所说,目前仍是代码似乎没有工作...我包括编辑的部分上面可以请你让我知道如果有什么错在上面的代码? –

+0

唯一突出的是它仍然不能在某些浏览器中工作。查看关于包含Crockford代码的答案的一开始。 –

+0

firbug抛出了这个错误JSON.parse:数据的 [打破该误差] VAR数据= JSON.parse(JSON)意外的结束; –