2010-10-02 69 views
0

如何处理来自.getjson的数组响应。以下代码处理ajax请求。jquery ajax数组响应处理

function getinfo() 
{ 
    $query="select field_uname_value,field_uaddress_value,field_uphone_value from {content_type_udetails}"; 
    $result= db_query($query); 
    $i=0;  
    while($item = db_fetch_object($result)) 
    { 
     $info[$i++]=array($item->field_uname_value,$item->field_uaddress_value,$item->field_uphone_value); 
    } 
    print_r($info); 
} 

,并返回数组如下

Array 
(
    [0] => Array 
     (
      [0] => bharath 
      [1] => 12th street ,ram nagar 
      [2] => 213124442 
     ) 

    [1] => Array 
     (
      [0] => Christina 
      [1] => 77,five corner 
      [2] => 76874323 
     ) 

    [2] => Array 
     (
      [0] => Ranjan 
      [1] => queen towers, 4th layout 
      [2] => 45745747 
     ) 

) 

但以下AJAX处理不工作。如何获得阵列响应

$.getJSON('/knpgetuserinfo.json&timestamp'+new Date().getTime(), function(data) { 
    alert(data[0][0]); 
} 

回答

2

你不能做到这一点,print_r的只是打印德阵列可读的文本,你仍然有一些键/值分离形式存在,并为您的使用getJSON我要说的是,你使用json_encode()

function getinfo() 
    { 
     $query="select field_uname_value,field_uaddress_value,field_uphone_value from {content_type_udetails}"; 
     $result= db_query($query); 
     $info = array(); 
     while($item = db_fetch_object($result)) 
     { 
      $info[] = array(
       'name' => $item->field_uname_value, 
       'address' => $item->field_uaddress_value, 
       'phone' => $item->field_uphone_value 
      ); 
     } 
     echo json_encode($info); 
    } 

,然后使用JavaScript像这样:

$.getJSON('/knpgetuserinfo.json&timestamp'+new Date().getTime(), function(data) { 
    $.each(data,function(item){ 
     //use item.name or item.address here 
    }); 
} 
1

除了打印,你通过json_encode需要JSON格式,通过更换:

print_r($info); 

有了:

echo json_encode($info); 

问题是你”不要以当前的JSON格式返回数据,所以当jQuery进行解析时,它会失败。

+0

json_encode返回一个字符串,而不是PHP中的任何类型的对象,应该只是echo'd! – RobertPitt 2010-10-02 11:28:01

+0

@RobertPitt - 是的,当我在快速测试中打他的代码时,它提醒我已经更新:) – 2010-10-02 11:28:33