我正在尝试使用jQuery .each()
方法列出搜索结果。不幸的是,即使我在数组中定义了它,它似乎总是输出undefined
。
我的JSON看起来像这样:
{
"count":2,
"results":[
{
"title":"AirMech\u00ae Arena",
"releasedate":"2015-05-05T00:00:00Z",
"icon":""
},
{
"title":"Game Title 2",
"releasedate":"2015-05-05T00:00:00Z",
"icon":""
},
{
"title":"Game Title 3",
"releasedate":"2015-05-05T00:00:00Z",
"icon":""
},
]
}
然后我尝试像这样做每个
$.each(results, function(index, value) {
$("#search-results").append(value["results"]["name"]);
});
我尝试过value["results"][0]["name"]
,value[0]["results"]["name"]
,value[0]["results"][0]["name"]
无论我尝试什么,它似乎总是返回未定义的错误。
是什么原因?
更新代码
$.each(results, function(index, value) {
$("#search-results").append(value["title"]);
alert(value["title"]); // alerts undefined
});
答案 0 :(得分:0)
您的对象中没有name
键。相反,您可能正在寻找title
。另外,您正在results
上循环,因此每个函数中的value
是 results
。没有results.results
,因此它返回了undefined
。
已更新,可以将您的对象分配给名为myObject
的var。
var myObject = {
"count":2,
"results":[
{
"title":"AirMech\u00ae Arena",
"releasedate":"2015-05-05T00:00:00Z",
"icon":""
},
{
"title":"Game Title 2",
"releasedate":"2015-05-05T00:00:00Z",
"icon":""
},
{
"title":"Game Title 3",
"releasedate":"2015-05-05T00:00:00Z",
"icon":""
},
]
}
这应该对您有用:
$.each(myObject.results, function(index, value) {
$("#search-results").append(value.title); // <-- you have title not name
});
如果您想使用所使用的语法来获取密钥,这也将起作用:
$.each(myObject.results, function(index, value) {
$("#search-results").append(value["title"]); // <-- you have title not name
});
答案 1 :(得分:-1)
正如我看到的Json对象一样,如果仔细阅读,您将尝试访问键结果,然后在 results 下您只有三个子键:
我在其中找不到Name键,但是在访问时,您正在写:
value["results"]["name"]
如果对象中不存在键名称,您将如何访问它?
如果您要查找标题:
results[0].title
results[0].releasedate
results[0]. icon
results[1].title
results[1].releasedate
results[1]. icon
我认为这将帮助您并帮助您清除逻辑。所以在您的循环中将是:
$.each(results, function(index, value) {
$("#search-results").append(value.title);
$("#search-results").append(value.releasedate);
$("#search-results").append(value.icon);
});