Tay*_*lor 5 php ajax jquery laravel laravel-5
我正在执行ajax请求,如果验证失败,则会向用户显示错误消息.
但是,用户还可以在控制台中看到错误消息.例如,如果用户未在控制台中完成其中一个字段,则显示以下内容:
无法加载资源:服务器响应状态为422(不可处理的实体)
我不希望他们看到错误.如何防止他们看到这样的错误以及控制台中的其他错误,如501错误和内容.我只是想显示一条警告"发生错误".我不想在控制台中显示任何内容.
我目前的AJAX代码:
(function ($) {
$('#settingsForm').submit(function (e) {
$.ajax({
type: "POST",
dataType: 'JSON',
url: '/settings',
data: $('#settingsForm').serialize(),
beforeSend: function () {
},
success: function (data) {
message(data);
},
error: function (data) {
if (data.status === 422 ) {
var errors = $.parseJSON(data.responseText);
errorsHtml = '<div class="alert alert-danger"><ul>';
$.each(errors, function (index, value) {
errorsHtml += '<li>' + value + '</li>';
});
errorsHtml += '</ul></div>'
$('#status_settings').html(errorsHtml);
}
}
})
;
e.preventDefault();
})
;
})
(window.jQuery);
Run Code Online (Sandbox Code Playgroud)
看起来您正在使用Laravel表单请求验证,如果AJAX表单提交,则会发送422状态代码以验证失败以及错误.您现在可以做两件事来更改状态代码并从控制台中删除错误消息(仅在这种情况下):
覆盖vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php中的响应函数,并在新函数中将状态代码更改为200.从那里复制函数并将其粘贴到app/Http/Requests/Request.php中的Request类中.更改以下行
return new JsonResponse($errors, 422);
Run Code Online (Sandbox Code Playgroud)
这样的事情:
$errors['status'] = 'error';
return new JsonResponse($errors, 200);