我有一个非常愚蠢的初学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
我错过了什么?
答案 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)
答案 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);
}
});