@IgFil

Почему js не видит ответа на ajax запрос?

Мой сервер возвращает ответ на xhr запрос, но функция xhr.responseText не получает ответ от сервера.
Ответ от сервера приходит в формате HTML.
<script language="JavaScript">
            window.onload = function(){
                var inp_message = document.querySelector('input[name=message_inp]');
                document.querySelector('#go').onclick = function() {
                var params = 'message=' + inp_message.value;
                ajaxPost(params, "cgi-bin/message_input.py");
                }
            }
            function ajaxPost(params, action){
            var xhr = new XMLHttpRequest();
            xhr.open("POST", action, true);
            xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xhr.send(params);
            output = xhr.responseText;
            return output;
            }
            window.setInterval(function(){
                var id_message = document.querySelector('p:first-child');
                var params = 'id=' + id_message.id;
                builder = ajaxPost(params, "cgi-bin/message_output.py");
                console.log(builder);
                //document.querySelector('#text_holder').innerHTML = builder;




            }
            ,10000);
        </script>

#!/usr/bin/env python
import cgi
import sqlite3
form = cgi.FieldStorage()
id = form.getfirst("id")
conn = sqlite3.connect("chat_database.db")
cursor = conn.cursor()
messages = cursor.execute("SELECT * FROM chat WHERE id > ?", (id, ))
conn.commit()
print("Content-type: text/html\n")
if messages != "":
    for message in messages:
        print("<p id="+str(message[0])+">"+"Test"+"</p>")
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
smilingcheater
@smilingcheater
XHR - асинхронный запрос. Получить ответ от сервера можно на событиях. Читайте https://learn.javascript.ru/xmlhttprequest , там всё есть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@0pauc0
Как то вы вольно с курсором обращаетесь.
В первый раз вижу, чтобы результат из cursor.execute сразу гоняли как список.
После cursor.execute обычно берем результат путем cursor.fetchall().
Или такой способ как у вас тоже работает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы