【问题标题】:$.getJSON returning "undefined" values, data reads [object Object]$.getJSON 返回“未定义”值,数据读取 [object Object]
【发布时间】:2012-07-25 13:58:01
【问题描述】:

提前感谢您的帮助。我是 JSON 新手,我一直在尝试使用 $.getJSON 填写一些表单字段,但没有成功。

我开始切块,直到我只需要测试来自服务器的响应(当在浏览器中查看下面列出的 URL 时,我的服务器提供 JSON):

$(document).ready(function(){
    $('#button').live('click', function(){
        $.getJSON('http://localhost:8000/core/api/master-assembly/16', function(data) { 
        // alert(data); // uncomment for debug
           $('#showdata').html("<p>item1="+data.afAgeCounter+" item2="+data.afWordCounter+" item3="+data.idNumber+"</p>");
        });
    });
});

我的 JSON 数据如下所示:

{"success":true,"data":{"afWordCounter":123,"afAgeCounter":456,"idNumber":789, ...

当我运行这个脚本时,我得到了输出:

item1=未定义 item2=未定义 item3=未定义

如果我取消注释

alert(data);

我得到的只是[object Object]

那么这里给出了什么?

【问题讨论】:

  • 您无法提醒对象,但是您可以使用 console.log(data) 并在 javascript 调试器(例如 Firebug)中查看该对象。

标签: jquery json ajax dom-events getjson


【解决方案1】:

你应该像这样访问它:

data.data.afWordCounter

因为你的 json 变量有这个结构:

data = {
    "success":true,
    "data":{
         "afWordCounter":123,"afAgeCounter":456,"idNumber":789,
         ...

【讨论】:

  • 非常感谢。我希望我能给你所有的答案。
【解决方案2】:

试试

$('#showdata').html("<p>item1="+data.data.afAgeCounter+" item2="+data.data.afWordCounter+" item3="+data.data.idNumber+"</p>");

【讨论】:

  • 非常感谢。效果很好。
【解决方案3】:

您返回的数据没有afAgeCounter 等属性。它有一个 data 属性。

您需要先获得 data 属性。

if(data.success){
    data = data.data;
    $('#showdata').html("<p>item1="+data.afAgeCounter+" item2="+data.afWordCounter+" item3="+data.idNumber+"</p>");
}

【讨论】:

  • 非常感谢。像魅力一样工作,我也很欣赏这个解释。
【解决方案4】:

正如其他人所逃避的那样,您的整个 JSON 结果是回调的参数 - 'data',它是一个对象。

它有两个属性,“成功”和“数据”。 'data' 本身和对象 {} 具有它自己的属性,afWordCounter、afAgeCounter 等。因此,要获得内部 'data' 对象的属性,您需要使用 data.data.afWordCounter 等

如果您将方法主体切换为这样的内容,可能会更清楚发生了什么:

    $.getJSON('http://localhost:8000/core/api/master-assembly/16', function(jsonresult)         { 

       $('#showdata').html("<p>item1="+jsonresult.data.afAgeCounter+" item2="+jsonresult.data.afWordCounter+" item3="+jsonresult.data.idNumber+"</p>");
    });

【讨论】:

  • 感谢您的精彩解释。
【解决方案5】:

只是在这里堆积,但如果您想知道 js 对象中包含什么,您可以随时使用 JSON.stringify 将其打印到字符串:https://github.com/douglascrockford/JSON-js/blob/master/json2.js

所以,有问题的对象,您可以通过以下方式查看其中包含的内容:

alert(JSON.stringify(mysteryObject));

console.log(JSON.stringify(mysteryObject);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多