РЕДАКТИРОВАТЬ: Вы неправильно поняли. Рассмотрим этот код псевдо. По сути, это то, что я хочу сделать, но это не работает, когда так пишут.
Как только вы получите ответ Laravel 422 с Fetch, response
не содержит фактических данных JSON. Вы должны использовать response => response.json()
для доступа к нему. Я поместил изображение того, что держит response
, и также предоставил вывод после использования response => response.json()
.
Я НЕ пытаюсь преобразовать объект в строку JSON.
Я использую SweetAlert2 с Laravel.
throw error(response => response.json())
swal({
title: 'Are you sure you want to add this resource?',
type: 'warning',
showCancelButton: true,
confirmButtonText: 'Submit',
showLoaderOnConfirm: true,
allowOutsideClick: () => !swal.isLoading(),
preConfirm: () => {
return fetch("/resource/add", {
method: "POST",
body: JSON.stringify(data),
credentials: "same-origin",
headers: new Headers({
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
'Content-Type': 'application/json',
'Accept': 'application/json'
})
})
.then(response => {
if (!response.ok) {
// How can I return the response => response.json() as an error?
// response.json() is undefined here when used
// throw Error( response => response.json() ); is what I want to do
throw Error(response.statusText);
}
return response;
})
.then(response => response.json())
.then(res => console.log('res is', res))
.catch(error => console.log('error is', error));
}
})
response
содержит следующее после response => response.json()
, и именно этот JSON я хочу передать error()
.
{"message":"The given data was invalid.","errors":{"name":["The name field is required."],"abbrev":["The abbrev field is required."]}}
Я выполняю вызов AJAX, и если проверка Laravel не удалась, он возвращает status 422
с сообщениями об ошибках проверки в JSON. Тем не менее, Fetch не считает 422
ответов «ошибкой», поэтому мне приходится вручную запускать его с помощью throw
.
Поскольку мои сообщения о проверке содержатся в ответе JSON
, т.е.
then(response => json())
как я могу конвертировать response
в json
и затем передать его в throw error()
?
Только к вашему сведению, это то, что console.log(response)
держит перед использованием response => response.json()