2

I've using jQuery on my contact form for a web app we're building, I am getting a JSON response from the server which is:

{"success": true}

Here's my jQuery so far:

$('.contact-form').on('submit', function(e) {

            // Prevent submitting
            e.preventDefault();

            // Loading from data-* attr
            var $submit = $('#contact-submit');
            $submit.html($submit.data('text'));

            // Form data
            var form      = $(this);
            var post_url  = form.attr('action');
            var post_data = form.serialize();

            // Ajax call
            $.ajax({
                type    : 'POST',
                url     : post_url,
                data    : post_data,
                dataType: 'json',
                success: function(){

                },
                error: function(){

                }
            });

        });

I've hit a wall as I've never 'checked' against a JSON response before in the 'success' jQuery method, can anyone help on this? I am looking for a method of checking the response I'm getting, and if 'true' is presented, I will then show a 'Sent success' message.

4

3 回答 3

7

成功回调将获取json对象作为第一个参数,可以在回调中使用如下图

$.ajax({
    type : 'POST',
    url : post_url,
    data : post_data,
    dataType : 'json',
    success : function(data) {
        if(data.success){
            //do something if success
        }

    },
    error : function() {

    }
});
于 2013-04-18T09:06:04.890 回答
2

为什么不使用例如 HTTP 代码 200(OK)或 201(已创建)回复服务器。然后在 jQuery 中自动落入成功参数是一切正常的地方。

当服务器出现错误时,例如使用代码 422 (Unprocessable Entity),则 jQuery ajax 将自动陷入错误。

如果这是不可能的,只需尝试使用 JSON.parse(data) 进行解析并沿着树向下走。如果解析失败,则 json 无效。

假设使用 Java 后端,您的回复将类似于此处所述:如何为 Java RESTful Web 服务发送 HTTP 错误?; 这实际上取决于您使用的类/框架。例如,将 HttpReponse 状态设置为 422。

您的 ajax 调用看起来像:

$.ajax({
    type    : 'POST',
    url     : post_url,
    data    : post_data,
    dataType: 'json',
    success: function(){
        // Everything went okay
    },
    statusCode: {
        422: function() {
            // Something went wrong (error in data serverside)
        }
    }
});
于 2013-04-18T09:07:39.140 回答
1

以下应该有效:

success: function(result) {
  var thing = $.parseJSON(result.d);
  if (thing.success) {

  }
}
于 2013-04-18T09:02:07.103 回答