<form id="login_frm" method="post" action = "/login/user_auth/">
<fieldset>
<legend>Login:</legend>
<label for="id_email">Email</label>
<input type="text" name="email" id="id_email" />
<label for="id_password">Password</label>
<input type="password" name="password" id="id_password" />
</fieldset>
<input name = "login" type="submit" value="Login" />
</form>
$(document).ready(function () {
$('#login_frm').submit(function() {
var $form = $(this);
$.post('/login/user_auth/' , form.serialize(), function(data) {
// alert ("function");
alert (data);
});
return false;
});
});
Django查看:
def login_user(request):
if request.method == 'POST':
# perform all logic / and db access
data = "hello"
return HttpResponse(data)
# return HttpResponse ('success.html')
我整个下午都被困在这里。
当我返回data
作为我的回复时,出于某种原因,浏览器通过加载一个空白网页显示“Hello”,上面只写着“Hello”;在上面的JavaScript函数中,永远不会调用alert (data);
(我无法理解为什么)。
我无法呈现success.html。我相信如果我在HttpResponse中写入render_to_response,我会解决这个问题。但是我认为将第1点工作放在第一位。
目标
发布后,我想从服务器捕获返回的响应(无论是“hello”消息,还是显示成功消息的网页 - 存储在“success.html”中)并显示在没有浏览器刷新新网页的login_frm
的位置。
答案 0 :(得分:0)
有趣。 form
未定义(您将其定义为$ form)并更改为$form
解决了问题。
$(document).ready(function () {
$('#login_frm').submit(function() {
var $form = $(this);
$.post('/login/user_auth/' , $form.serialize(), function(data) {
// alert ("function");
alert (data);
});
return false;
});
});
您可能希望使用类似event.preventDefault()
的内容,以便未来的错误不会像您这样隐藏。 $('form').submit(function(e){ e.preventDefault(); .....})