jQuery .each()始终返回无法读取未定义的属性“名称”

时间:2018-07-02 14:35:34

标签: javascript jquery json each

我正在尝试使用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
            });

2 个答案:

答案 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
});

查看工作示例:https://codepen.io/mccambridge/pen/pKYbWv

答案 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);
});