当前正在为我的投资组合开发一个网站项目,由于我已经熟悉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,我还在学习!
答案 0 :(得分:0)
首先,我想指出这是一个菜鸟错误多少,只是说一个随机注释告诉我responseObject没有使用名为“ events”的属性,我意识到这就是名字JSON数组应该可以使用。
ps。我发现很难的另一件事是,您不能在分隔词中使用带有“-”的键,最好只使用“ exampleExample”。 >
这只是表明,即使是直接回答也无法帮助您解决问题,大声笑。