我正在尝试实现引导登录表单。当用户提交时,我正在进行ajax调用以提交到Servlet,在那里我可以检查其有效性。如果用户名和密码有效,我将重定向到主页。如果没有,我想将JSON消息发送回屏幕。
ajax如何知道我发回页面的消息是错误消息还是成功消息?
如何在上方登录字段上显示该消息?谢谢!
$(document).ready(function () {
$('#form-signin').validate({
rules: {
login: {
minlength: 3,
maxlength: 15,
required: true
},
password: {
minlength: 3,
maxlength: 15,
required: true
}
},
messages: { //messages to appear on error
login: {
required:"Please Enter your user ID."
},
password: {
required: "Please Enter Password."
}
},
highlight: function (element) {
$(element).closest('.control-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.control-group').removeClass('has-error');
},
submitHandler: function(form) {
alert("submit click");
$.ajax({
url:"/ePay/UserValidationServlet",
type:"POST",
dataType: "json",
data: $('#form-signin').serialize(),
error: function(errorMessage) {
console.log(errorMessage); // Optional
},
success: function(response){
alert(response);
}
});
}
});
});
DEMO
最佳答案
一种可以完成的方式:
在要显示错误消息的地方放置一个隐藏的div:
<div id="errorMessage" style="display: none"></div>
当表单提交成功和验证错误时,让ajax调用返回200(确定)状态。响应主体应为JSON。 (您已经通过设置
dataType: 'json'
表示希望使用JSON。)没有验证错误时,返回的JSON如下所示:
{ "success": true }
像这样的验证错误:
( "success": false, "message": "Authentication failed." }
然后,您的ajax成功回调将如下所示:
success: function(result) {
if (result.success) {
// Handle the success result.
} else {
$('#errorMessage').html(result.message);
}
}
更新以回应评论:
我想服务器可以在表单提交成功后返回重定向,但它也可能返回:
{ "success": true, "redirectUrl": "/xxxxx" }
然后,成功处理程序将是:
success: function(result) {
if (result.success) {
window.top.location = result.redirectUrl;
} else {
$('#errorMessage').html(result.message);
}
}
有时通过ajax提交表单,但是成功不应导致重定向。一种情况是表单位于弹出窗口上,并且成功提交表单将关闭弹出窗口。
关于jquery - jQuery ajax成功还是错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21005986/