如何每N秒调度一次ajax调用?

时间:2009-08-29 04:25:29

标签: javascript ajax http

如果我想要每N秒重新加载一页,我会在HTML中添加这样的内容: meta http-equiv="refresh" content="5"

对于AJAX调用做同样的事情是否有标准做法?我希望安排一个AJAX调用,每隔10秒就会关闭一次,以便更新部分页面,而无需刷新整个页面。如果我可以在不同的时间安排多个AJAX调用会更好,因为页面的某些部分可能需要比其他部分更频繁地更新。

TIA

4 个答案:

答案 0 :(得分:11)

您可以使用setTimeoutsetInterval(后者可能最适合您想要做的事情)。

setInterval(makeRequest, (10 * 1000));

...其中makeRequest是一个通过AJAX重新加载某些内容的函数。

答案 1 :(得分:4)

function proxy()
{
  /* implement call to your Ajax method */
}

setInterval( proxy, 1000 ); // last arg is in milliseconds

答案 2 :(得分:1)

You can use serInterval method of javascript:
Just write down the lines at the bottom of your page:

<script>
window.setInterval(function(){
  ajaxCallFunction();  //calling every 5 seconds
}, 5000);

function ajaxCallFunction(){
    //this function uses ajax to interact with the server
}
<script>

答案 3 :(得分:0)

我假设在web.xml中配置了一个带有URL模式 / UpdateCount 的servlet来提供动态数据/内容,并且在其中有一个div元素 countStatDiv jsp页面。

以下代码使用GET方法每30秒刷新/更新 countStatDiv 的内容,并且可以根据需要更改变量值:

                <script>
                    var request;
                    var seconds=30;
                    function getRequestObject(){
                    setInterval(function() {sendRequest();},seconds*1000);
                    if (window.ActiveXObject){
                    return (new ActiveXObject("Microsoft.XMLHTTP"));
                    } else if (window.XMLHttpRequest){
                    return(new XMLHttpRequest());
                    } else {
                    return (null);
                    }
                    }
                    function sendRequest(){
                    request = getRequestObject();
                    request.onreadystatechange = handleResponse;
                    request.open("GET", "../UpdateCount", true);
                    request.send(null);
                    }
                    function handleResponse(){
                    if((request.readyState == 4)&amp;&amp;(request.status == 200)){
                    var serverResponse = request.responseText;
                    var statCtrl=document.getElementById("countStatDiv");
                    statCtrl.innerHTML=serverResponse;
                    }
                    }
                </script>