Автоматическое обновление с использованием AJAX не работает?

На моем веб-сайте есть функция чата, позволяющая двум пользователям общаться друг с другом, и я использую для этого JavaScript, AJAX и PHP.

В настоящее время он не будет обновлять область чата автоматически, если я не отправлю ответ в чат или не обновлю страницу. Я не могу понять, почему.

Функция JavaScript

function checkReply(threadid) {
    // XMLHttpRequest
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("chatwrap").innerHTML = xmlhttp.responseText;
            setInterval(checkReply(threadid), 10000);
        }
    }
    xmlhttp.open("GET","inc/chatreply.php?chatid="+ threadid,true);
    xmlhttp.send();
}

Обработчик события находится на <div> responseText будет в конечном итоге:

<div id="chatwrap" onload="checkReply('.$threadid.')"></div>

$threadid переменная GET, установленная в верхней части страницы:

$threadid = (int)$_GET['chatid'];

1 ответ

Решение

ОБНОВИТЬ

Видя, что вы уже были в состоянии PHP, синтаксис был правильным.

Проблема в том, что div не обладает событием загрузки. Вам нужно будет прикрепить его к тегу body или включить скрипт в заголовок или под div, так как он будет выполняться только после того, как div будет визуализирован.


Вы не включаете переменную PHP правильно. В данный момент вы передаете строку .$threadid. к checkReply функция. Вам придется снова перейти в режим PHP, прежде чем использовать этот синтаксис с помощью разделителей. <?php & ?>,

<div id="chatwrap" onload="checkReply(<?php echo $threadid; ?>)"></div>

Это должно работать лучше.

Другие вопросы по тегам