0

我试图在我的 json 中识别一些空数组并放置一个 div 。当脚本看到空数组时,它会停止加载 json。代码是:

$.each(data.posts, function (i, item) {
    var newstitle = item.title;
    var newstmbn = item.thumbnail;

    if (data !== undefined && data.posts !== undefined && data.posts.attachments !== undefined) {
        $.each(item.attachments, function (i2, type) {
            $('#news').append('<div>' + item.thumbnail + '</div>');
        });
    } else {
        $.each(item.attachments, function (i2, type) {
            $('#news').append('<div>' + type.images.thumbnail.url + '</div>');
        });
    }
    output.append(news);

});

我的 json 看起来像:

{
    "posts": [
    {
        "id": 914,
        "title": "post1",
        "thumbnail": "\/uploads\/url.jpeg",
        "attachments": [
        {
            "images": {
                "thumbnail": {
                    "url": "\/uploads\/url-150x92.jpeg"
                }
            }
        }
        ]
    },
    {
        "id": 915,
        "title": "post1",
        "thumbnail": "\/uploads\/url.jpeg",
        "attachments": []
    },
    {
        "id": 914,
        "title": "post1",
        "thumbnail": "\/uploads\/url.jpeg",
        "attachments": [
        {
            "images": {
                "thumbnail": {
                    "url": "\/uploads\/url-150x99.jpeg"
                }
            }
        }
        ]
    }
]}

所以你可以看到一些“附件”是空的,我想放置“item.thumbnail”,但它似乎不起作用。你能帮我么?

4

1 回答 1

2

我认为你的主要问题是这一行:

 if (data !== undefined && data.posts !== undefined && data.posts.attachments !== undefined)

这被放置在遍历data.posts数组的 .each 循环中。

if (data !== undefined && data.posts !== undefined)

应该放在该循环之外,以测试是否可以循环。

data.posts.attachments !== undefined

没有任何意义,因为 data.posts 是一个数组,因此没有附件属性。那应该是

if(item.attachments !== undefined)

如果这是错误的,即该项目没有附件,则不能像当前那样遍历 item.attachments。另外,你弄错了 if/else,所以替换

$.each(item.attachments, function (i2, type) {
    $('#news').append('<div>' + type.images.thumbnail.url + '</div>');
});

$('#news').append('<div>' + item.thumbnail + '</div>');

$.each(item.attachments, function (i2, type) {
    $('#news').append('<div>' + item.thumbnail + '</div>');
});

$.each(item.attachments, function (i2, type) {
    $('#news').append('<div>' + type.images.thumbnail.url + '</div>');
});

编辑:因为我意识到上面的内容可能很难理解,所以我认为这是正确的代码:

if (data !== undefined && data.posts !== undefined) {
    $.each(data.posts, function (i, item) {
        if (item.attachments !== undefined && item.attachments.length > 0) {
            $.each(item.attachments, function (i2, type) {
                $('#news').append('<div>' + type.images.thumbnail.url + '</div>');
            });
        } else {
            $('#news').append('<div>' + item.thumbnail + '</div>');
        }
        output.append(news); //I assume output is a valid jquery object...
    });
}

http://jsfiddle.net/Jh3hk/上的概念证明

于 2013-03-27T22:07:08.520 回答