使用ajax从刷新页面检索json

时间:2012-02-15 06:56:14

标签: ajax json refresh

我有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");
    }
})();

1 个答案:

答案 0 :(得分:1)

您可以使用window.setInterval函数以您定义的固定时间间隔执行一些JavaScript代码。因此,删除元刷新标记并将您的AJAX调用放在setInterval

// poll the server every 10 seconds for new data
window.setInterval(function() {
    $.get("thread.php", ...
}, 10000);