#ajax #jquery #tornado
#ajax #jquery #tornado
Вопрос:
Я работал над проектом на Tornado и только начал интегрировать несколько вызовов AJAX через jQuery. Я довольно новичок во всем этом, поэтому простите меня, если есть очевидный ответ.
У меня настроен вызов AJAX для отправки формы входа. Это вызывает соответствующий обработчик Tornado, и я вижу, что он работает до тех пор, пока он не должен отображать новую страницу, после чего он просто не отображает страницу. Я вижу сообщение о регистрации прямо перед вызовом рендеринга, а затем ничего. Ошибок нет, он просто остается на той же странице и ничего не делает. У кого-нибудь есть идеи, в чем дело? Большое спасибо за любую помощь.
Вот фрагмент из Python:
if auth:
self.set_current_user(username)
logging.info("LOGGED IN: RENDERING HOME")
self.render("home.html")
На стороне jQuery это тоже очень просто:
$(document).ready(function(){
$("form#loginform").submit(function(){
console.log("submitting form");
$.post("/login",{
email: $("#email").val(),
password: $("#password").val(),
action: "postmsg"
}, function(xml) {
$("#msg").empty();
returnCall(xml);
});
return false;
});
});
function returnCall(xml) {
console.log("returned");
}
Ответ №1:
В конце концов я нашел ответ на этот вопрос через друга и просто помещаю его здесь для будущих путешественников. По-видимому, если вы вызываете рендеринг страниц через AJAX, страница, которую вы хотите отобразить, просто загружается в память, но фактически не отображается в браузере. Если я выполняю трассировку «xml» в приведенном примере, он возвращает неотрендированный текст HTML-документа, который я хотел отобразить.
В этом случае я должен выполнить какой-то обратный вызов Javascript, чтобы сообщить ему, что пользователь либо авторизован, либо нет на стороне python, а затем использовать это для перенаправления на страницу из javascript.
Надеюсь, это кому-то поможет.