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

use*_*908 2 ajax jquery 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);

                }
            });
Run Code Online (Sandbox Code Playgroud)

这是返回的内容:

{"name":["The name field is required."]}
Run Code Online (Sandbox Code Playgroud)

pro*_*son 6

如果你要返回a 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...
}
Run Code Online (Sandbox Code Playgroud)