我正在尝试实现引导登录表单。当用户提交时,我正在进行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/

10-16 17:42