如何多次调用函数? (在setInterval()中)

时间:2014-10-12 14:11:53

标签: javascript json http web

function chatUpdate() {
    var xmlhttp = new XMLHttpRequest();
    var url = document.URL + '&action=update';

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var myArr = JSON.parse(xmlhttp.responseText);
                alert(myArr);
        }
    }

    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

setInterval(chatUpdate(), 1000);

此代码每3秒更新一次聊天。它正确地警告myArr(我只是为了调试目的而提醒它),但只是一次 - 当页面加载时(但我需要每隔3秒),尽管调用了一个setInterval。

我认为问题是(必须是)onreadystatechange / readyState在第一次请求后没有更新。我努力尝试但是没有成功。

请帮助

1 个答案:

答案 0 :(得分:2)

问题在于您将函数传递给setInterval的方式,与您的XHR调用无关。

传递函数时不要使用括号,只需传递名称即可。通过使用括号,您将立即执行该函数并传递返回值(在本例中为undefined)。

setInterval(chatUpdate, 1000);
//                    ^ no ()