Проблема с записью в переменную
в функции:
function sendMessage(message) { var xhr = new XMLHttpRequest(); xhr.open("GET", "chat.php?message=" + message, true); xhr.onreadystatechange = function() { if(xhr.readyState != 4) return; if(xhr.status != 200) return; message = xhr.responseText; // (*) } xhr.send(null); return message; } В message не записывается результат, а остаётся такой, как была передана в функцию. Голову уже сломал над этим вопросом. По идее в функции, которая назначена на onreadystatechange, message видна и может этой функцией изменяться. Вместо строки (*) вставлял конкретно то что должно изменятся на странице, работает, то есть ответ с сервера приходит. Возможно проблема в этой функции: function insertMessage() { var message = inMessageBox.value; if(message == "") return; message = sendMessage(message); var outputMessage = "<span class='message'>" + message + "</span><br>"; var lastMessage = outMessageBox.children[outMessageBox.children.length - 1]; lastMessage.insertAdjacentHTML("afterEnd", outputMessage); inMessageBox.value = ""; } |
У вас асинхронный запрос (третий агрумент для xhr.open()).
Поэтому return message происходит еще до того как запрос улетит к серверу. Привыкайте к асинхронному программированию. По возвращению результата с сервера делайте с ответом что вам нужно. |
Спасибо. Я в принципе подозревал это, но всё же отбросил эту идею.
|
Часовой пояс GMT +3, время: 06:27. |