【发布时间】:2019-02-11 04:25:57
【问题描述】:
我使用 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 的早期版本中,例如5.4,错误函数中的JS 通常会像正常的HTTP 响应(正常的网页)一样从后端呈现错误。那时,我的猜测是开发人员必须对想要发回的响应类型有意识,默认是 HTTP。因此,如果后端出现错误,我会看到类似这样的内容(尽管这个是 5.7)
那么这里有什么问题!我认为这里的问题是 5.6 以上,Laravel 能够检测请求的类型并根据请求类型以适当的格式发送响应。在这种情况下,它会为我的 AJAX 请求返回 JSON 响应。所以现在当后端出现错误时,我会看到这样的东西
以如此凌乱的方式显示错误使我更难调试甚至理解错误!我知道让 JSON 以更好的方式出现是可能的,但是我想知道我是否有可能(并且实际上是一个很好的解决方案)让 Laravel 返回 HTTP 响应而与以前的版本无关?
在处理GET 请求时,如果在访问list/products 之类的路由时从后端获取并出错,调试的简单方法是从地址栏访问url 并在HTTP 中获取错误直接格式化,但是在处理POST 请求时,情况并非如此。这不是真正的“编程错误”或其他东西,而是找到一种方便的方法来调试 Laravel 的 AJAX 问题。我想得到我的“良好的旧 laravel 行为”谢谢!
【问题讨论】:
标签: jquery ajax laravel laravel-5.7