簡體   English   中英

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

[英]how to schedule ajax calls every N seconds?

如果我想要每N秒重新加載一整頁,我會在HTML中添加這樣的內容: meta http-equiv="refresh" content="5"

對AJAX調用做同樣的事情是否有標准做法? 我希望安排一個AJAX調用,每隔10秒就會關閉一次,以便更新部分頁面,而無需刷新整個頁面。 如果我可以在不同的時間安排多個AJAX調用會更好,因為頁面的某些部分可能需要比其他部分更頻繁地更新。

TIA

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

setInterval(makeRequest, (10 * 1000));

...其中makeRequest是一個通過AJAX重新加載某些內容的函數。

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

setInterval( proxy, 1000 ); // last arg is in milliseconds
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>

我假設在web.xml中配置了一個帶有URL Pattern / UpdateCount的servlet以提供動態數據/內容,並且jsp頁面中有一個div元素countStatDiv

以下代碼使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM