如何访问从JQuery收到的JSON响应中的数据?

时间:2014-07-25 01:10:54

标签: javascript jquery ajax json

如何访问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

如何访问第一个提醒中显示的收到的数据?

5 个答案:

答案 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);