如何解决“未捕获的TypeError:无法读取未定义的属性”长度”

时间:2019-08-16 05:08:30

标签: javascript ajax

当前正在为我的投资组合开发一个网站项目,由于我已经熟悉HTML和CSS + Sass,所以最近我获得了一本JavaScript和jquery书籍来帮助我学习这种新语言。

我正在从事的项目涉及访问域内JSON文件,该文件包含一些我想使用ajax以HTML格式显示的简单数据,但是唯一的问题是我遇到此错误'Uncaught TypeError:无法读取属性'length'of undefined'。

任何帮助将不胜感激!

javascript / ajax

var xhr = new XMLHttpRequest();
xhr.onload = function() {
    if (xhr.status === 200) {
        responseObject = JSON.parse(xhr.responseText);

        var project;
        for (var i = 0; i < responseObject.events.length; i++) {
            //for loop 

            project = '<div class="display-item>';
            project += '<div class="title">' + responseObject.events[i].name + '</div>';
            project += '<div class="sourcelink">' + responseObject.events[i].source-code-link + '</div>';
            project += '<div class="livelink">' + responseObject.evetns[i].live-link + '</div>';
            project += '<div class="isPrivate>' + responseObject.events[i].isPrivate + '</div>';
            project += '<div class="isLive">' + responseObject.events[i].isLive + '</div>';
            project += '</div>';
        }

        //Update page with new content
        document.getElementById('openSourceContent').innerHTML = project;
    }
};

xhr.open('GET', '../js/data/htmlProjects.json', true); //Prepare request
xhr.send(null); //Send request

正在处理的json

{
    "projects" : [
        {
            "name" : "Minimalist Template 1",
            "source-code-link" : "https://github.com/CandyPheonix/html5-minimalist-template", 
            "live-link" : "https://candypheonix.github.io/html5-minimalist-template/", 
            "isPrivate" : "false",
            "isLive" : "true"
        },
        {
            "name" : "Minimalist Template 2",
            "source-code-link" : "https://github.com/CandyPheonix/html5-minimalist-template-2", 
            "live-link" : "https://candypheonix.github.io/html5-minimalist-template-2/", 
            "isPrivate" : "false",
            "isLive" : "true"
        }
    ]
}

我的预期结果是让ajax读取JSON文件数据并将其解析为HTML就绪代码,以便可以在浏览器中显示它,但这给了我未定义错误的“长度”。

控制台中发生的错误: **未捕获到的TypeError:无法读取MLHttpRequest.xhr.onload(jsonDecompileToHTML.js:8)中未定义的属性“长度”

xhr.onload @ jsonDecompileToHTML.js:8

加载(异步)

(匿名)@ jsonDecompileToHTML.js:2 **

ps 。 很抱歉没有使用jQuery,我还在学习!

1 个答案:

答案 0 :(得分:0)

首先,我想指出这是一个菜鸟错误多少,只是说一个随机注释告诉我responseObject没有使用名为“ events”的属性,我意识到这就是名字JSON数组应该可以使用。

ps。我发现很难的另一件事是,您不能在分隔词中使用带有“-”的键,最好只使用“ exampleExample”。 >

这只是表明,即使是直接回答也无法帮助您解决问题,大声笑。