我使用jQuery来快速创建Laravel
模板,单页的经验。例如更新只是一个网页的#content
部当按钮(链接)上的管理面板的边栏被点击。
我通常添加success
和error
回调到我这样的请求
$.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
)
那么,有什么问题在这里!这里的问题是5.6向上,我认为,Laravel
能够检测的各种要求,并在根据请求类型以适当的格式发送响应。在这种情况下,它返回我的AJAX请求的JSON响应。所以,现在当在后端的错,我会看到这样的事情
有这样一种混乱的方式显示错误,使得它更难为我调试,甚至理解错误!我知道这是可能有JSON出现但更好的方法,我想知道是否有可能(和逸岸一个很好的解决方案),对我来说,只是让Laravel
在以前的版本中,不论返回的HTTP响应是怎样的?
当GET
请求的工作,如果从后端获取和错误,而来访的像list/products
例如路线,一个简单的方法来调试仅仅是从地址栏访问该网址并获得HTTP格式错误而是直接与POST
工作时请求不是这种情况。这是不是一个真正的“编程错误”或东西,但找到一个方便的方法来调试AJAX问题Laravel
。我想获得我的“好老laravel行为”谢谢!
如果你是追求的是调试异常的便捷方式,我可能会建议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);