我有一个登录表单,我希望客户机发送AJAX POST请求,如下所示,并提供错误处理。在验证/身份验证错误的情况下,我不会使用从login视图的响应接收到的JSON字符串将页面重新加载或刷新到与POST request Handler(/users/login/)相对应的url。我试着使用event.preventDefault(),这是许多关于SO的答案所建议的,但无法使其发挥作用。这里出什么问题了吗?我不认为这是Django的问题。我知道触发了onsubmit,因为窗口重定向到POST处理程序URL /users/login/,其中包含预期的JSON字符串响应{"error": ["Entered mobile number is not registered"]}
JQuery代码$("#loginform").on('submit', function(event) {
event.preventDefault();
alert("Was preventDefault() called: " + event.isDefaultPrevented());
console.log("form submitted!");
var url = "/users/login/";
$.ajax({
type: "POST",
url:url,
data: $("#loginform").serialize(),
success: function(data)
{
console.log(data);
var result = JSON.stringify(data);
if(result.indexOf('errors')!=-1 ){
console.log(data);
if(data.errors[0] == "Mobile number and password don't match")
{
$('.login-error').text("Mobile number and password don't match");
}
else if(data.errors[0] == "Entered mobile number is not registered")
{
$('.login-error').text("Entered mobile number is not registered");
}
}
else
{
window.open("/users/profile/");
}
//var result = JSON.stringify(data);
// console.log(result);
}
})
});
查看处理程序
^{pr2}$
HTML代码
Login to your profile
{% csrf_token %}
LOG IN