无法从jquery ajax()请求中读取json对象

时间:2011-04-03 14:19:05

标签: php jquery ajax

我现在已经浏览了一些,但找不到适合我的答案,无论如何,这是JS:

jQuery.ajax({
    url:'scripts/form.php?'+
        'name='+$('#name').val()+
        '&comment='+$('#comment').val(),
    type:'POST',
    dataType:'json',
    complete:function(success) { 
        alert(success.responseText);
        alert(success.name);
    }
});

这是(摘要)脚本

header('Content-type: application/json');
$name    = $_GET['name'];
$comment = $_GET['comment'];

echo json_encode(array('name'=>$name, 'comment'=>$comment));

以下是警告框的输出:

  1. {“name”:“test name”,“comment”:“test comment”}
  2. 未定义
  3. 我尝试了很多不同的东西,但我很茫然。

2 个答案:

答案 0 :(得分:2)

您应该使用success事件而不是complete事件 - 否则,响应不会自动解析为JSON。

jQuery.ajax({
    url:'scripts/form.php?'+
        'name='+$('#name').val()+
        '&comment='+$('#comment').val(),
    type:'POST',
    dataType:'json',
    success:function(data) { 
        alert(data.name);
    }
});

如果要使用complete处理程序,则需要使用$.parseJSON解析返回值,然后才能将其用作对象:

var response = $.parseJSON(success.responseText);

答案 1 :(得分:1)

使用$.getJSON(),因为您不需要$.ajax()的完全灵活性。

$.getJSON('scripts/form.php',
{
    name: $('#name').val(),
    comment: $('#comment').val()
}, function (data)
{
    alert(data.name);
});