我的 Nodejs Express 后端有一个错误处理程序,可以捕获一些错误并将其发送到客户端:
res.status(error.status|| 500).json({
status: error.status||500,
message: 'MY CUSTOM ERROR MESSAGE',
stack: error.stack
})
我使用jquery ajax的时间最长了,一直能够像这样获取从后端获取的消息的值:
$.ajaxSetup({
error(jqXHR, exception) {
$('#divSubmitButtonSpinAnimation').addClass('d-none');
console.log(jqXHR);
console.log(exception);
$.toast({
position: 'top-right', /** top-left/top-right/top-center/bottom-left/bottom-right/bottom-center - Where the toast will show up * */
dismissible: true, /** true/false - If you want to show the button to dismiss the toast manually * */
stackable: true, /** true/false - If you want the toasts to be stackable * */
pauseDelayOnHover: true, /** true/false - If you want to pause the delay of toast when hovering over the toast * */
title: jqXHR.statusText,
subtitle: jqXHR.status,
content: (jqXHR.responseJSON) ? jqXHR.responseJSON.message : 'Unspecified Error',
type: 'error',
delay: 5000,
});
return false;
},
});
但是,我现在正在研究上传文件的能力,并且在使用jquery ajax时遇到了问题,所以我决定开始使用await fetch api。我已经完成了大部分工作,除了我无法再读取
response.message
的值,因为它是未定义的。
const response = await fetch(
'/getStudentInfo',
{
headers: {
Accept: 'application/json',
},
method: 'POST',
body: formData,
},
);
if (response.status === 200) {
return response.json();
}
console.log(response.message)
response.message 未定义,但 response.status 为 500,response.statusText 为“内部服务器错误”,这是预期的,因为我从服务器发送错误 500。
所以看起来我必须将响应转换为
json
才能获取消息属性。所以我所做的就是这样的。
const response = await fetch(
'/createInspectionDetail',
{
headers: {
Accept: 'application/json',
},
method: 'POST',
body: formData,
},
);
if (response.status === 200) {
return response.json();
}
const data = await response.json();
createGenericMessage('Error', data.message, 'danger');