Ajax Request-Funktion per Interval funktioniert nicht

Jan-Frederik Stieler

Monsterator
Moderator
Gude,

ich versuch mich das erste mal an einem vanilla Javascript Ajax und es taucht ein problem auf was ich nicht verstehe:
Das Beispiel ist so auch auf der https://developer.mozilla.org/en-US/docs/Web/Guide/AJAX/Getting_Started#Step_3_–_A_Simple_Example veröffentlicht.

Javascript:
        var fileHash;
        var httpRequest;

        // cssFiles = document.querySelectorAll("link[rel=stylesheet]");
        document.getElementById("ajaxButton").addEventListener('click', makeRequest);


        window.setInterval(function(){
            makeRequest;
            console.log('interval');
        }, 5000);

         function makeRequest() {
           httpRequest = new XMLHttpRequest();

           if (!httpRequest) {
             console.log('Giving up :( Cannot create an XMLHTTP instance');
             return false;
           }

           httpRequest.onreadystatechange = alertContents;
           httpRequest.open('GET', 'file.php');
           httpRequest.send();
           console.log('Request send');
         }

         function alertContents() {
           if (httpRequest.readyState === XMLHttpRequest.DONE) {
             if (httpRequest.status === 200) {
               console.log(httpRequest.responseText);
             } else {
               console.log('There was a problem with the request.');
             }
           }
         }

Wenn ich den Request per setInterval ausführen lasse kommt ichts raus außer dass das Interval durchläuft.Fürhre ich jedoch die Funktion makeRequest per Button aus bekomm ich den Inhalt von file.php. Hab ich dort ein Zeitproblem oder was versteh ich da grad nicht? Vielleicht ist es auch etwas spät :).
 
Hi,

du musst die Funktion makeRequest in der Interval-Funktion aufrufen - hier fehlen die runden Klammern:
Javascript:
window.setInterval(function(){
    makeRequest();
    console.log('interval');
}, 5000);
Ciao
Quaese
 
... oder, wenn Du auf das console.log verzichten kannst, direkt die Referenz übergeben:
Code:
window.setInterval(makeRequest, 5000);
 

Neue Beiträge

Zurück