我有一个 JSON 对象,我正在使用 each() 循环将表行添加到表中。我无法确保 JSON 数组中显示的数据的完整性,偶尔会遇到一些 NULL。
例如:
// A GOOD ARRAY
{
id: "193",
location: {
city: "Atlanta",
state: "GA"
},
name: "John"
},
// NOW WE STUMBLE UPON A BAD ARRAY WITH A NULL
{
id: "194",
location: {
city: "Boise",
state: null
},
name: "Frank"
},
{...}
现在,当我处理没有 NULL 值的 JSON 对象时,each() 会毫无问题地循环。只要我在数组中的任何地方遇到一个成员为 NULL,循环就会中断。
这就是我循环的方式:
$.getJSON("/getstuff/jsonprovider.php", function (data) {
var results = data.parentnode;
var tableThing = $(".myTable tbody");
var i = 0;
$.each(results, function () {
tableThing.append('<tr><td></td><td>' + results[i].id + '</td><td>' + results[i].name + '</td><td>' + results[i].location.city + ', ' + results[i].location.state + '</td></tr>');
i++;
});
});
我应该在这里调查除 each() 以外的其他方法,还是应该使用完全不同的方法?
谢谢
最佳答案
由于您的数据可能有空值,因此在尝试使用数据之前,您需要确保该数据存在。只使用一次 .append
也更有效。下面我使用默认的空对象和 $.extend 深拷贝来确保我们从中提取数据的对象始终定义了所有数据值,即使该值不在 json 中。我仍然不确定此时将如何处理 null。
var emptyObj = {
id: "",
name: "",
location: {
city: "",
state: ""
}
},htmlToAppend = "";
$.each(results, function (i,obj) {
var newObj = $.extend(true,{},emptyObj,obj);
htmlToAppend += '<tr><td></td><td>' + newObj.id + '</td><td>' + newObj.name + '</td><td>' + newObj.location.city + ', ' + newObj.location.state + '</td></tr>';
});
tableThing.append(htmlToAppend);
关于javascript - jQuery each() 在 null 上中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549281/