我有以下代码:
$.getJSON("updatechat.php", messageSender, function(data) {
var tmp = -1;
$.each(data, function(index, message) {
if (lastID != -1) {
$("#mainBox").append("<div>"
+ message.time +
"<span> " + message.sender + " : </span>" +
message.message +
"</div>");
}
tmp = message.id;
});
lastID = tmp;
});
我的问题是,有时,由于一个奇怪的原因,$ .each()函数没有运行,导致lastID将其值更改为-1(tmp的值)。在updatechat.php中,我有一个选择最后一个ID的查询。有什么想法吗?
修改 我发现在$ .getJSON的奇数调用中,它输入$ .each,甚至在调用时它没有。
答案 0 :(得分:0)
在第一个请求中,您将获得一组消息,并将最后一个ID设置为消息数组中的最后一个ID。在下一个调用中,您将获得null,因为自上一个id以来没有新消息,因此没有任何内容可以迭代,最后一个id重置为-1,并且该过程重复。
如果data
为null
,您应该不做任何事情。收到新消息后,data
将不再是null
,$.each
将会运行,并将任何新消息附加到消息框中。
if (!data) { return; }
var tmp = -1;
$.each(data, ...
通过此更改,第一次运行会找到消息,data
将不会是null
,并且会附加消息。第二次运行,5秒后,没有新消息,数据为null
,并且$.each
被跳过,lastid
保留当前值。