6 Stimmen

Wie kann man Ajax-Aufrufe alle N Sekunden planen?

Wenn ich möchte, dass eine ganze Seite alle N Sekunden neu geladen wird, würde ich so etwas in den HTML-Code eingeben: meta http-equiv="refresh" content="5"

Gibt es eine Standardpraxis, um dasselbe für AJAX-Aufrufe zu tun? Ich möchte einen AJAX-Aufruf planen, der z. B. alle 10 Sekunden ausgelöst wird, um Teile der Seite zu aktualisieren, ohne die gesamte Seite zu aktualisieren. Noch besser wäre es, wenn ich mehrere AJAX-Aufrufe zu verschiedenen Zeiten planen könnte, da einige Teile der Seite möglicherweise häufiger aktualisiert werden müssen als andere.

TIA

13voto

Steve Harrison Punkte 111024

Sie könnten verwenden setTimeout ou setInterval (Letzteres ist wahrscheinlich am besten geeignet für das, was Sie tun wollen).

setInterval(makeRequest, (10 * 1000));

...wo makeRequest ist eine Funktion, die einen Inhalt über AJAX nachlädt.

5voto

Decent Dabbler Punkte 22092
function proxy()
{
  /* implement call to your Ajax method */
}

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

1voto

Ankit Gupta Punkte 191
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>

0voto

AVA Punkte 2368

Ich nehme an, dass es ein Servlet mit URL-Muster gibt /UpdateCount ist in web.xml konfiguriert, um dynamische Daten/Inhalte bereitzustellen, und es gibt ein div-Element countStatDiv auf der jsp-Seite.

Der folgende Code aktualisiert den Inhalt von countStatDiv alle 30 Sekunden mit der Methode GET und der Variablen Sekunden Wert kann je nach Bedarf geändert werden:

                <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>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X