使用JavaScript在页面上显示JSON
我不知道为什么下面代码段中的代码在“generateSkillData”函数中返回此错误:使用JavaScript在页面上显示JSON,javascript,json,function,dom,xmlhttprequest,Javascript,Json,Function,Dom,Xmlhttprequest,我不知道为什么下面代码段中的代码在“generateSkillData”函数中返回此错误: Uncaught TypeError: Cannot read property 'forEach' of undefined at generateSkillData (script.js:54) at loadingDone (script.js:45) at XMLHttpRequest.request.onload (script.js:24) [ { "skil
Uncaught TypeError: Cannot read property 'forEach' of undefined
at generateSkillData (script.js:54)
at loadingDone (script.js:45)
at XMLHttpRequest.request.onload (script.js:24)
[
{
"skill": "Python",
"description": "An increasingly popular server-side language"
}
]
而不是显示skills.json的结果(参见下面的一个对象示例):
Uncaught TypeError: Cannot read property 'forEach' of undefined
at generateSkillData (script.js:54)
at loadingDone (script.js:45)
at XMLHttpRequest.request.onload (script.js:24)
[
{
"skill": "Python",
"description": "An increasingly popular server-side language"
}
]
我还有其他类似的代码,运行良好。我从代码中借用了很多功能。
函数getSkillData(errorFunc,successFunc){
let request=new XMLHttpRequest();
open(“GET”,“js/skills.json”,true);
request.onload=函数(){
如果(request.status>=200&&request.status<400){
log(“成功!通话成功!”);
const data=request.responseText;
successFunc(数据){
日志(“错误:没有可用数据”);
}
};
request.onerror=函数errorFunc(){
errorFunc();
};
};
request.send();
}
函数加载完成(数据){
控制台日志(“加载完成”);
skill_box.innerHTML=“”;
const finished_markup=generateSkillData(数据);
const skill_container=document.getElementById(“skill_框”);
skill_container.insertAdjacentHTML(“beforeed”,finished_标记);
};
函数generateSkillData(响应){
让skill_markup=“”;
response.data.forEach(函数(thing){
技能标记+=formatSkillData(东西);
});
返回技能和标记;
}
函数formatSkillData(项){
常量标记=`
- ${item.skill}
- ${item.description}
技能名称:
技能描述:
在使用console.log-on响应后在此处添加了JSON.parse
function generateSkillData(response){
let skill_markup = "";
console.log(response);
response.forEach(function (thing) {
skill_markup += formatSkillData(thing);
});
return skill_markup;
}
在使用console.log之后,我想出了如何做您必须解析对JSON的响应
JSON.parse(response);
在每次通话前插入。
通过这种方式,您可以迭代它并获得特定的对象。
generateSkillData
中的response
是一个字符串,它的语法是:successFunc(data);{console.log(“错误:没有可用的数据”);}
?实际上不确定,抱歉