$ .each没有按预期工作

时间:2015-07-06 20:32:26

标签: jquery ajax json

我有以下代码:

$.getJSON("updatechat.php", messageSender, function(data) {

            var tmp = -1;
            $.each(data, function(index, message) {
                if (lastID != -1) {
                    $("#mainBox").append("<div>" 
                                  + message.time +
                                  "<span>&nbsp;" + message.sender + "&nbsp;: </span>" + 
                                  message.message + 
                                  "</div>");
                }
                tmp = message.id;
            });
            lastID = tmp;
        });

我的问题是,有时,由于一个奇怪的原因,$ .each()函数没有运行,导致lastID将其值更改为-1(tmp的值)。在updatechat.php中,我有一个选择最后一个ID的查询。有什么想法吗?

修改 我发现在$ .getJSON的奇数调用中,它输入$ .each,甚至在调用时它没有。

1 个答案:

答案 0 :(得分:0)

在第一个请求中,您将获得一组消息,并将最后一个ID设置为消息数组中的最后一个ID。在下一个调用中,您将获得null,因为自上一个id以来没有新消息,因此没有任何内容可以迭代,最后一个id重置为-1,并且该过程重复。

如果datanull,您应该不做任何事情。收到新消息后,data将不再是null$.each将会运行,并将任何新消息附加到消息框中。

if (!data) { return; }
var tmp = -1;
$.each(data, ...

通过此更改,第一次运行会找到消息,data将不会是null,并且会附加消息。第二次运行,5秒后,没有新消息,数据为null,并且$.each被跳过,lastid保留当前值。