我有index.php页面,通过发送变量“dateposted”对thread.php进行ajax调用。 thread.php返回一个json,它在我的index.php中循环,最后一个值再次发送回ajax调用。这一切都很好。 但是,我面临的问题是当我使用
将thread.php放入autorefresh时<meta http-equiv="refresh" content="2">
当我这样做时,我的ajax调用中返回的响应包括this和json结果,这会导致我关闭json数组的循环。我可以删除上面的代码,因为我需要不断刷新thread.php来从服务器轮询数据。我如何解决这个问题:
供参考: thread.php
<meta http-equiv="refresh" content="2">
if(!isset($_GET['dateposted']))
{ $lastpost = 0;
}
else
{$lastpost= $_GET['dateposted'];}
$latestmsgs = retrieveNewMsgs($lastpost,$currtime);
?>
<?php echo json_encode($latestmsgs);?>
的index.php
var returnValue = (function() {
var dateposted = null;
return function() {
$.get("thread.php", { "lastMessage": dateposted }, function(result) {
if(result) {
for (var i = 0, len = result.length; i < len; i++) {
var msgs = result[i];
var newDiv = $("<div><img src='" + msgs[0] +"'/>" + msgs[2] + msgs[3] + msgs[4] + msgs[5] + "</div><br>");
$('#chatContents').append(newDiv);
}
}
dateposted = result[result.length-1][5];
}, "json");
}
})();
答案 0 :(得分:1)
您可以使用window.setInterval函数以您定义的固定时间间隔执行一些JavaScript代码。因此,删除元刷新标记并将您的AJAX调用放在setInterval
:
// poll the server every 10 seconds for new data
window.setInterval(function() {
$.get("thread.php", ...
}, 10000);