使用jQuery ajax时,如何向用户显示JSON HTTP 422响应?

时间:2015-03-15 21:00:23

标签: jquery ajax json

您好我的json有这个奇怪的问题,我正在尝试返回错误消息并在我的页面上显示,我已经尝试了很多我在网上找到的解决方案,但我一直得到'undefined'或'null'或什么都没有取决于我尝试,这是我的javascript:

           $.ajax({
                type: "POST",
                url: "/auth/register",
                headers : {
                    'X-XSRF-Token': $("meta[name='csrf_token']").attr("content")
                },
                data: {
                    email: $scope.d.email,
                    password: $scope.d.password,
                    password_confirmation: $scope.d.password_confirmation
                },
                dataType: 'json',
                success: function(data) {
                    //
                },
                error: function(data) {
                    $scope.d.errors = data.responseJSON;
                    alert($scope.d.errors);

                }
            });

这是返回的内容:

{"name":["The name field is required."]}

1 个答案:

答案 0 :(得分:6)

如果要返回422,则jQuery将调用您的失败/错误回调。错误/失败回调的签名是:

Function( jqXHR jqXHR, String textStatus, String errorThrown )

如果错误jQuery没有为您解析响应,您需要自己手动执行它,如果您想要访问它,使您的错误回调看起来像:

function(xhr, status, err) {
    var responseJSON = JSON.parse(xhr.responseText);
    $scope.d.errors = responseJSON;
    alert($scope.d.errors);
    // do stuff with your error messages presumably...
}