1

我有一个非常愚蠢的初学者 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

4 回答 4

0

我错过了什么?

要在 PHP 脚本中设置Content-TypeHTTP 响应标头:application/json

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

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

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

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

于 2013-05-23T06:50:50.990 回答
0

你需要像这样解析它:

function(data) {
    var obj = $.parseJSON(data);
    alert(obj.test_id);
}
于 2013-05-23T06:52:21.027 回答
0

您缺少使用函数 parseJSON

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

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

于 2013-05-23T06:51:22.620 回答
0

到目前为止发布的答案都没有对我有用。

这是我必须做的才能让它工作:

$.ajax({
   url: '/foo.php',
   success: function(data) {
       var json = data.responseJSON;
       alert(json.test_id);
   }
});
于 2017-01-28T19:54:55.947 回答