迭代并将嵌套的obj属性输出到HTML

时间:2017-12-13 05:36:39

标签: javascript jquery json

如果item.NestObj.textpropertyVal不正确,我该如何打电话给他们?

success: function(data){

                var html = "";
                $.each(data.mainOutterObj, function (index, item) {
                    html += "<ul>";
                    console.log(item);
                    //$.each(item.data, function (index1, item1) {
                        html += "<li class='id'>" + item.id + "</li>";
                        html += "<li class='title'>" + item.title + "</li>";
                        html += "<li class='cast'>" + item.cast.name + "</li>";                                                                                                                                                         
                        html += "<li class='genre'>" + item.genre.type + "</li>";                                                                                                                                   

                    //});
                    html += "</ul>";
                });

一旦我开始尝试访问内部或嵌套对象属性,它们就会报告undefined。例如,低于2失败。 (仅作为[object Object]输出)或未定义。大概是因为我没有以正确的方式访问它。基本上,强制转换和流派是.mainOutterObj中的嵌套对象,我想要的属性值包含.name.type等字段。

html += "<li class='cast'>" + item.cast.name + "</li>";                                                                                                                                                         
html += "<li class='genre'>" + item.genre.type + "</li>";                                                                                                                                   

如何迭代并输出这些,与外部obj属性值相同?

例如,这里是嵌套强制转换对象的响应,您会注意到。name存在。但是当item.cast.name如上所述,它报告未定义。

enter image description here

2 个答案:

答案 0 :(得分:3)

您的cast是一个包含一个元素的数组。你应该:

html += "<li class='cast'>" + item.cast[0].name + "</li>";                                                                                                                                                         
html += "<li class='genre'>" + item.genre[0].type + "</li>";  

您必须先获取cast的第一个元素(元素0),然后才能获取属性name

答案 1 :(得分:0)

采取以下声明:

html += "<li class='cast'>" + item.cast.name + "</li>";

现在,如果html的值为undefined,则表示name对象中没有名为item.cast的属性。

如果值为[Object Object],则表示item.cast.name是对象而不是sting或数值。