我有一个登录页面,当用户输入用户名和密码时,我想将此信息传递给server(post),如果遇到错误,我只想显示错误消息,如果没有错误,我想提交在this情况下,始终禁止提交表单。
在下面的代码中,始终阻止提交并从服务器获取错误消息并显示它:
login.js
$('#login-form').submit(function(e){
var message;
$.post('/login/', $(this).serialize(), function(data){
obj = JSON.parse(data);
message = obj.message;
alert(message);
});
e.preventDefault();
});
view.py
// if username and password is faild
message="login information is failed"
return HttpResponse(json.dumps({'message': message}))
//else with specific data
return render(request, 'front/member.html', data)
我想这样做:
if(message) e.preventDefault();
// else submit
但首先是e.preventDefault();执行然后从服务器设置消息 我该怎么办?
答案 0 :(得分:0)
但首先是e.preventDefault();执行然后从服务器设置消息,我该怎么办?
这是因为JavaScript是异步的:由于$.post
请求将在后台运行,因此该功能已完成,您才能从服务器获取响应。
您有两种方法可以解决此问题:
$('#login-form').submit
,而不是捕获$('submit-button').click
。 $.post
发送。