[英]Returning a proper response for post request in Django
<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
而無需瀏覽器刷新新網頁。
有趣。 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(); .....})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.