【问题标题】:Why is my json reference returning undefined?为什么我的 json 引用返回未定义?
【发布时间】:2013-08-23 22:09:47
【问题描述】:

我正在使用这个 JavaScript:

$.getJSON("/aTest.json", function (jsonObj) {
    $("#testJSONBtn").click(function () {
        var val = "";
        for (var i = 0; i <= jsonObj.events.length; ++i) {
            val += jsonObj.events[i].title + ", " + jsonObj.events[i].date + ", " + jsonObj.events[i].explanation + "<br/>";
        }
        $("#JSONOutput").append(val);
    });
});

访问 json 文件:

{
    "events":
    [
        {"title":"Okmulgee Public Schools Starts 3rd Quarter" , "date":"1-2-2013" , "explanation":"Okmulgee Public Schools begins its third quarter."},
        {"title":"Okmulgee Public Schools-Closed in Observance of Martin Luther King Jr. Holiday" , "date":"1-21-2013" , "explanation":"The Okmulgee Public Schools will be closed in observance of the Martin Luther King Jr. holiday."},
        {"title":"Okmulgee Public Schools County Professional Day" , "date":"2-1-2013" , "explanation":"Okmulgee Public Schools County Professional Day is today."}
    ]
}

在最终让 IIS Express 提供 json 文件之后,我已经查看了超过一千次的语法并没有看到任何错误,但是当我尝试得到这个时,我得到了:

Uncaught TypeError: Cannot read property 'title' of undefined

这行 JavaScript/jQuery 函数出错:

val += jsonObj.events[i].title + ", " + jsonObj.events[i].date + ", " + jsonObj.events[i].explanation + "<br/>";

我很茫然,我研究了以下网页和 StackOverflow 问题:

Why is my JSON object undefined?

JSON returning as undefined

calling Json data returns undefined "

http://api.jquery.com/jQuery.getJSON/

http://www.w3schools.com/json/default.asp

与 W3Schools 的示例相匹配时,语法似乎是正确的。

【问题讨论】:

  • console.log(jsonObj.events[i]) 返回什么? console.log(jsonObj) 怎么样?
  • 为什么要在 AJAX 成功回调中订阅按钮单击事件处理程序?
  • @Blender 非常抱歉,但我不知道如何获取该信息。
  • @VoidKing:把它放在你的循环中并打开你的 JS 控制台:stackoverflow.com/questions/4743730/…
  • @VoidKing:JS 控制台按钮位于工具栏的最右侧。当您 console.log() 脚本中的某些内容时,它会在控制台中弹出:i.imgur.com/cn9tF.png

标签: javascript jquery ajax json


【解决方案1】:

这里有一个额外的 =:

for (var i = 0; i <= jsonObj.events.length; ++i) {

应该是:

for (var i = 0; i < jsonObj.events.length; ++i) {

你超出了你的数组。

【讨论】:

  • @你们俩。你不知道我被困了多久!让服务器提供 json 文件还有另一个问题,但您的答案是正确的!它说我在 5 分钟内不能接受你的回答,但我现在必须打卡下班。我保证明天早上我会接受这件事! (我做了测试,它确实有效!)谢谢谢谢谢谢! (对于超出我的阵列的蹩脚疏忽感到抱歉)。
猜你喜欢
  • 2021-12-14
  • 2021-04-25
  • 2014-06-04
  • 2017-07-23
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
相关资源
最近更新 更多