0

我从 get 返回以下消息:

{"status":"success"}

我的代码如下所示:

$.get(url, function(result) { 
        console.log(result)                  
        console.log(result['status'])
            console.log(result.status)          
        return false;
    });

这将打印以下内容:

{"status":"success"}
undefined
undefined

我究竟做错了什么?

4

4 回答 4

1

如果您console.log正在显示"{"status":"success"}",则表示您的 JSON 未被解析。您需要告诉 jQuery 为您执行此操作:

$.get(url, function(result) { 
    console.log(result);     
    console.log(result['status']);
    console.log(result.status);
}, 'json');

或者,更好的是:

$.getJSON(url, function(result) { 
    console.log(result);     
    console.log(result['status']);
    console.log(result.status);
});
于 2013-10-31T21:38:29.597 回答
1

您必须指定您希望接收 JSON 数据。jQuery.get它是函数中的另一个参数

$.get(url, function(result) { 
    console.log(result)                  
    console.log(result['status'])
        console.log(result.status)          
    return false;
}, 'json'); // <---- HERE

没有它,您将result被视为字符串。

于 2013-10-31T21:38:42.410 回答
0

您的 JSON 可能没有提供将其标识为 JSON 的正确 HTTP 标头(您可以在浏览器的开发工具的“网络”选项卡中检查标头),它可能没有被解析。尝试

console.log(JSON.parse(result)['status'])

或设置datatype"json".

如果您管理服务器,则应修复标头。

于 2013-10-31T21:35:48.713 回答
0

推测:您使用错误的Content-Type标头提供 JSON,因此 jQuery 没有通过 JSON 解析器传递它。

确保 URLContent-Type: application/json在标头中返回。

于 2013-10-31T21:35:58.630 回答