Javascript 无法将此JSON加载到我的表中

Javascript 无法将此JSON加载到我的表中,javascript,json,ajax,Javascript,Json,Ajax,我有一件简单的事: 有一个包含books对象的JSON,每本书都有一个标题、作者和年份。 我想从列表中选择一个选项并在表中显示所选属性。我使用了W3中的一个示例,但现在我被卡住了,没有任何东西可以正常工作 功能更改\u myselect(sel){ var obj,dbParam,xmlhttp,myObj,x,txt=“”; obj={“表”:sel,“限制”:20}; dbParam=JSON.stringify(obj); xmlhttp=新的XMLHttpRequest(); xmlh

我有一件简单的事:

有一个包含books对象的JSON,每本书都有一个标题、作者和年份。 我想从列表中选择一个选项并在表中显示所选属性。我使用了W3中的一个示例,但现在我被卡住了,没有任何东西可以正常工作

功能更改\u myselect(sel){
var obj,dbParam,xmlhttp,myObj,x,txt=“”;
obj={“表”:sel,“限制”:20};
dbParam=JSON.stringify(obj);
xmlhttp=新的XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
myObj=JSON.parse(this.responseText);
txt+=“”
对于(myObj中的x){
txt+=“”+myObj[x]。名称+“”;
}
txt+=“”
document.getElementById(“demo”).innerHTML=txt;
}
};
open(“GET”,“generated.json”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xmlhttp.send(“x=”+dbParam);
}

使用调试器行很容易发现问题

console.log(myObj)
它是一个对象,您正试图在其上循环。您希望在保存数组的对象中的键上循环

console.log(myObj.books);

迭代对象中的单个属性
books
,而不是迭代该属性包含的数组

与此相反:

for (x in myObj) {
  txt += "<tr><td>" + myObj[x].name + "</td></tr>";
}
for(myObj中的x){
txt+=“”+myObj[x]。名称+“”;
}
试着这样做:

myObj.books.forEach((book) => {
  txt += "<tr><td>" + book[sel.toLowerCase()] + "</td></tr>";
});
myObj.books.forEach((book)=>{
txt+=“”+book[sel.toLowerCase()]+“”;
});

那么,您的代码哪里不起作用了?请在您的问题中提供一些代码,谢谢,现在数据已经加载,但只有书名,当从选择中选择年份和作者时,如何显示它们?@Matt创建一个对象来保存返回的数据,名称作为键,书籍对象作为值。然后,当有人单击TD时,您可以在对象中查找名称并显示其他属性。@Matt-try
book[sel.toLowerCase()]
-answer updated。。。如果在html中以小写形式放置选项值,则不需要小写
myObj.books.forEach((book) => {
  txt += "<tr><td>" + book[sel.toLowerCase()] + "</td></tr>";
});