我有一个 div,它使用长轮询来更新表数据,除了我输入一段新文本时,它一切正常,之前插入的文本总是首先出现,然后是我刚刚写的。
所以,如果我写你好,你好,再见,我会得到以下信息:
hi
hi
hello
hello
goodbye
相关JS:
var timestamp = null;
function waitForMsg() {
$.ajax({
type: 'GET',
url: 'update.php?timestamp=' + timestamp,
async: true,
cache: false,
success:function(data) {
// alert(data);
var json = eval('('+data+')');
if (json['msg']) {
$('.chat_contacts .inner_chat').append(json['msg']+'<br>'); // MD
}
timestamp = json['timestamp'];
setTimeout('waitForMsg()', 1000);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// alert('error '+textStatus+'('+errorThrown+')');
setTimeout('waitForMsg()', 1000);
}
});
}
update.php 中的相关片段
$response = array();
while($row = mysqli_fetch_assoc($r)) {
$nou = $row['f1'];
$nru = $row['f2'];
$response['msg'] = $row['content'];
$response['timestamp'] = $row['time'];
}
echo json_encode($response);
为什么它不只检测最后输入的内容并单独显示,而不重复输入的先前数据?
编辑:我注意到了一些东西。
它似乎也在吞下输入的内容,所以如果表是空的,我写“hi”,我得到你好,但是如果我写“你好”,我又得到“hi”,然后如果我写一些东西否则我会得到“你好”(而不是我刚刚写的)等等。