如何强制返回HTTP响应laravel一个AJAX请求

问题描述 投票:0回答:1

我使用jQuery来快速创建Laravel模板,单页的经验。例如更新只是一个网页的#content部当按钮(链接)上的管理面板的边栏被点击。

我通常添加successerror回调到我这样的请求

        $.ajax({
            url: url,
            type: "POST",
            data: data,
            success:function(data){
        },
        error:function(xhr, status, error) {
               //Error msg for Developers
               $('body').html('');
               $('body').prepend(xhr.responseText);
               $('body').append('XHR :'+xhr);
               $('body').append('STATUS :'+status);
               $('body').append('ERROR :'+error);
               // for users
               // $('.infoMsg').html("OOPS SOMETHING BAD HAPPENED!");
               // $('#infoModal').modal();


           }
       });

在早期版本的Laravel e.g 5.4误差函数里面的JS通常从后端渲染错误,就像正常的HTTP响应(正常网页)。当时,我的猜测是开发者必须是故意的那种响应想送回去,默认是HTTP的。所以,如果在后台有错误我会看到这样的事情(虽然这个人是5.7

enter image description here

那么,有什么问题在这里!这里的问题是5.6向上,我认为,Laravel能够检测的各种要求,并在根据请求类型以适当的格式发送响应。在这种情况下,它返回我的AJAX请求的JSON响应。所以,现在当在后端的错,我会看到这样的事情

enter image description here

有这样一种混乱的方式显示错误,使得它更难为我调试,甚至理解错误!我知道这是可能有JSON出现但更好的方法,我想知道是否有可能(和逸岸一个很好的解决方案),对我来说,只是让Laravel在以前的版本中,不论返回的HTTP响应是怎样的?

GET请求的工作,如果从后端获取和错误,而来访的像list/products例如路线,一个简单的方法来调试仅仅是从地址栏访问该网址并获得HTTP格式错误而是直接与POST工作时请求不是这种情况。这是不是一个真正的“编程错误”或东西,但找到一个方便的方法来调试AJAX问题Laravel。我想获得我的“好老laravel行为”谢谢!

jquery ajax laravel laravel-5.7
1个回答
1
投票

如果你是追求的是调试异常的便捷方式,我可能会建议https://github.com/barryvdh/laravel-debugbar

如果你真的想迫使漂亮“哎呀”错误从所有的Ajax异常的第一个屏幕响应速度,可以从其\App\Exceptions\Handler::render代码替换您parent class方法,改变这个:

return $request->expectsJson()
                    ? $this->prepareJsonResponse($request, $e)
                    : $this->prepareResponse($request, $e);

为此:

return $this->prepareResponse($request, $e);
© www.soinside.com 2019 - 2024. All rights reserved.