2011-04-03 54 views
1

我已经所以现在浏览了几个,不能找到适合我的答案JSON对象,反正这里的JS:无法读取jQuery的阿贾克斯()请求

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. { “名”: “测试名称”, “评论”: “试评”}
  2. undefined

我试过了一堆不同的东西,但我很茫然。

回答

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); 
+0

不知道为什么我打了一天之后才问这个问题。谢谢! – 2011-04-03 14:27:58

+0

我没有看到在这里发布请求的原因 - 无论如何都是URL参数中的数据。 – 2011-04-03 14:30:47

+0

@MattBall:OP的要求,OP的代码。 – Jon 2011-04-03 14:31:39

1

使用$.getJSON()需要充分的灵活性$.ajax()

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