如何访问JSON AJAX请求的完整函数中返回的JSON中存储的数据。例如,我有以下代码:
$.ajax({
url: 'buildings.php',
data: "building=" + building,
complete: function (response) {
alert(response.responseText);
alert(response.name);
}
});
在第一个警报中,它显示以下内容,这是我从PHP发送的预期JSON数据。
{"name":"HSB","description":"description","directionsURL":"directionsURL","imageArray":{"1":"URL 1","2":"URL 2"}}
在第二个警报中,显示
undefined
如何访问第一个提醒中显示的收到的数据?
答案 0 :(得分:1)
如果在调用中添加dataType: "json"
,则响应将成为json对象:
$.ajax({
url: 'buildings.php',
data: "building=" + building,
dataType: "json",
complete: function (response) {
alert(response.name);
}
});
编辑:所以看来无论出于什么原因,jQuery都无法自动解析它,但是JSON.parse(response.responseText)
做了伎俩。
答案 1 :(得分:1)
您的PHP脚本是否在标头中返回了正确的MIME类型?如下所示 - Returning JSON from a PHP Script
如果是,请将其添加到选项中。
dataType: "json",
如果您的内容标题正确,最简单的错误之一就是返回带引号的字符串而不是实际的JSON。即。
的实际回报内容"{ \"key\": \"value\" }"
而不是
{ "key": "value" }
答案 2 :(得分:1)
您可以jQuery.getJSON()
查看内容的回复类型
答案 3 :(得分:0)
你的PHP只是返回一个看起来的字符串,就像一个JSON对象,但是javascript并不够聪明,知道你希望它是一个JSON对象。只需解析响应,然后再采取行动:
$.ajax({
url: 'buildings.php',
data: "building=" + building,
complete: function (response) {
var json = JSON.parse(response.responseText);
alert(json.responseText);
alert(json.name);
}
});
答案 4 :(得分:0)
看起来 response.responseText 包含您的JSON数据包。尝试这样的事情:
var json = JSON.parse(response.responseText); //assume response.responseText is a json string
console.log(json.name);