2014-10-12 2 views
1
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.Как вызвать функцию несколько раз? (В setInterval())

Я думаю, что проблема в том, что onreadystatechange/readyState не обновляется после первого запроса. Я очень старался, но мне это не удалось.

Пожалуйста, помогите

+0

http://stackoverflow.com/questions/13574882/multiple-xmlhttprequests-every-x-seconds –

+0

Этот вопрос был задан в десятки раз уже на SO. См. Http://stackoverflow.com/questions/3800512/calling-functions-with-settimeout только для одного примера. Интересно, почему людям так сложно обернуть головы. В документации говорится, что вы передаете функцию. Неужели так сложно отличить функцию от вызова функции? –

ответ

2

Этот вопрос с тем, как вы передаете функцию setInterval, ничего общего с XHR вызова.

Не используйте круглые скобки при передаче функции, просто передайте имя. Используя скобки, вы немедленно выполняете функцию и передаете возвращаемое значение (в этом случае не определено).

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

Спасибо большое! Действительно помог – tjomamokrenko

Смежные вопросы