javascript - jQuery each() 在 null 上中断

标签 javascript jquery json

我有一个 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/

相关文章:

java - 使用 jackson 将自定义反序列化类添加到已经存在的@JsonDeserialize 注释

node.js - 将单词列表转换为频率 json

javascript - window.alert 无法删除

javascript - 选择下拉列表在 IE9 中扩展很长

jquery - 如何根据类名和属性名删除某个div?

javascript - onClick 后清除下拉值吗?

c# - 在 JSON.NET 中序列化派生类时的字段顺序

javascript - 在 IE 中 Javascript 的执行速度比 Firefox、Safari 和 Chrome 慢

javascript - Jquery 禁用不起作用

javascript - 我如何在 location.href 中传递多个参数?