Laravel 5.8 JSON 响应有这么多空格
Laravel 5.8 JSON Response With So Many Whitespace
每次我做一个 ajax 请求 Laravel 总是 return JSON 响应前面有这么多白色 space text 所以响应总是错误执行,而不是在 ajax 请求的成功部分,我也无法显示我的错误消息,因为它以白色 space 开头,所以我不能接受对象符号,我能做些什么来摆脱它吗?
回复文字截图:
我的ajax请求码:
$('.ajax-form').submit(function (e) {
e.preventDefault();
var form = $(this);
$.ajax({
dataType: "json",
url: form.attr('action'),
method: form.attr('method'),
data: new FormData(this),
contentType: false,
cache: false,
processData: false,
success: function(result){
console.log('success');
alert(result.data.message);
if (result.data.location) window.location.hash = result.data.location;
location.reload(true);
},
error: function(err){
console.log(err);
if (err.status == 422) {
let el = form.find('.error-block');
el.find('.alert-danger').remove();
console.log(err);
$.each(err.responseJSON.errors, function (i, error) {
let errorBlock = "<div class='alert alert-danger alert-dismissible'> "
+ "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>"
+ "<p><i class='icon fa fa-close'></i> " + error[0]+ "</p></div>";
el.append(errorBlock);
$('.modal').animate({ scrollTop: 0 }, 'fast');
});
}
}
});
});
我在 laravel 中的代码:
public function insert(Request $request)
{
$request->validate(['image' => 'required|image']);
return response()->json(['data' => ['message' => 'Data is successfully updated!']]);
}
实际上这段代码在我得到这个白色之前就可以工作了space,我认为这是服务器端有问题,但除了我做了 composer update
之前。
您可以尝试将带有 "Accept" 参数的 headers 设置为 json 到您的 ajax.
$.ajax({
...,
headers: {
'Accept': 'application/json',
},
...
})
由于我还不能添加评论,我将post在这里提问。你能告诉我们在将数据返回给脚本之前转储到你的控制器中吗?
目前,我发现我的解决方案是在 Controller __construct
方法中添加 ob_clean();
这样我就不必在每个控制器和请求中都添加它,但我希望有更好的解决方案比这个。
每次我做一个 ajax 请求 Laravel 总是 return JSON 响应前面有这么多白色 space text 所以响应总是错误执行,而不是在 ajax 请求的成功部分,我也无法显示我的错误消息,因为它以白色 space 开头,所以我不能接受对象符号,我能做些什么来摆脱它吗?
回复文字截图:
我的ajax请求码:
$('.ajax-form').submit(function (e) {
e.preventDefault();
var form = $(this);
$.ajax({
dataType: "json",
url: form.attr('action'),
method: form.attr('method'),
data: new FormData(this),
contentType: false,
cache: false,
processData: false,
success: function(result){
console.log('success');
alert(result.data.message);
if (result.data.location) window.location.hash = result.data.location;
location.reload(true);
},
error: function(err){
console.log(err);
if (err.status == 422) {
let el = form.find('.error-block');
el.find('.alert-danger').remove();
console.log(err);
$.each(err.responseJSON.errors, function (i, error) {
let errorBlock = "<div class='alert alert-danger alert-dismissible'> "
+ "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>"
+ "<p><i class='icon fa fa-close'></i> " + error[0]+ "</p></div>";
el.append(errorBlock);
$('.modal').animate({ scrollTop: 0 }, 'fast');
});
}
}
});
});
我在 laravel 中的代码:
public function insert(Request $request)
{
$request->validate(['image' => 'required|image']);
return response()->json(['data' => ['message' => 'Data is successfully updated!']]);
}
实际上这段代码在我得到这个白色之前就可以工作了space,我认为这是服务器端有问题,但除了我做了 composer update
之前。
您可以尝试将带有 "Accept" 参数的 headers 设置为 json 到您的 ajax.
$.ajax({
...,
headers: {
'Accept': 'application/json',
},
...
})
由于我还不能添加评论,我将post在这里提问。你能告诉我们在将数据返回给脚本之前转储到你的控制器中吗?
目前,我发现我的解决方案是在 Controller __construct
方法中添加 ob_clean();
这样我就不必在每个控制器和请求中都添加它,但我希望有更好的解决方案比这个。