访问ajax响应JSON的详细信息

时间:2013-05-23 06:49:27

标签: ajax json jquery

我有一个非常愚蠢的初学jquery问题,即使我在这里看到了很多类似的问题:

从带有ajax的PHP发送:

public function to_json() {
    return json_encode(array( 'test_id' => 'test_value' ));
}

在jquery文件的成功部分,我把:

function(data) {
    alert(data);
}

它在警报窗口中显示:

{"test_id":"test_value"}

我想,这很好,但如果我将功能更改为:

function(data) {
    alert(data.test_id);
}

我得到了:

undefined

我错过了什么?

4 个答案:

答案 0 :(得分:0)

  

我错过了什么?

在PHP脚本中将Content-Type HTTP响应标头设置为application/json

header('Content-Type: application/json');

或者在客户端上将dataType参数设置为json

$.ajax({
   url: '/foo.php',
   dataType: 'json',
   success: function(data) {
       alert(data.test_id);
   }
});

首先是首选,因为这样您的服务器端脚本正确地向客户端指示它正在使用的内容类型。并且jQuery足够智能,可以使用此响应标头并自动解析服务器的响应,然后将其提供给success回调。

答案 1 :(得分:0)

您缺少使用函数parseJSON

参考:http://api.jquery.com/jQuery.parseJSON/

该函数将json字符串转换为javascript对象

答案 2 :(得分:0)

你需要像这样解析它:

function(data) {
    var obj = $.parseJSON(data);
    alert(obj.test_id);
}

答案 3 :(得分:0)

到目前为止发布的答案都没有为我效劳。

这是我必须要做的才能让它发挥作用:

$.ajax({
   url: '/foo.php',
   success: function(data) {
       var json = data.responseJSON;
       alert(json.test_id);
   }
});