2011-03-24 22 views
1

我只是试图通过jQuery的AJAX将数组的元素吐到一个表单上的单独输入字段。jquery使用AJAX的json_encoded数组

继承人我的javascript代码:

 $('#based').change(function() { 
     if ($(this).val().length > 0) 
     {   
      $.ajax({ 
       type: "POST", 
       url: "ajax.php", 
       data: "id="+$(this).val(), 
       success: function(data){ 
        if (data != 'error') 
        {      
         $('#keyword').val(data[2]); 
         $('#keyword_slug').val(data[3]); 
        } 
       } 
      }); 
     } 
    }); 

我的继承人为 'ajax.php' PHP代码:

$sql = mysql_query("select * from `keywords` where `id`='".mysql_real_escape_string($_POST['id'])."'"); 

if (mysql_num_rows($sql) == 0) 
{ 
    echo 'error'; 
} 
else 
{ 
    while ($row = mysql_fetch_assoc($sql)) 
    { 
     foreach ($row as $k => $v) 
      $data[] = $v; 
    } 

    echo json_encode($data); 
} 

它不工作。我在这里做什么?我已经查看了serializeArray,但无法正常工作。

+0

你的返回数组是什么样的? – alex 2011-03-24 01:02:52

+0

您可以打印服务器上和客户端上的数据阵列的长度吗? – allthenutsandbolts 2011-03-24 01:03:19

+0

你的POST是什么?究竟是什么脚本返回? – bensiu 2011-03-24 01:04:30

回答

2

我想你需要dataType: 'json'如果你期待JSON回来。

否则jQuery有猜测,如果你没有发送内容类型application/json,它可能会猜错。

+0

如果出现这个问题,最好在PHP中完成,并将'Content-Type'头部设置为'JSON' – 2011-03-24 01:04:45

+0

@cwolves我希望你的意思是'application/json'。我也更喜欢明确说明返回类型。 – alex 2011-03-24 01:12:35

+0

是的,脑屁:) – 2011-03-24 01:13:51