gpt4 book ai didi

javascript - 处理空数组并出现错误 "Uncaught (in promise) SyntaxError: Unexpected end of JSON input."

转载 作者:行者123 更新时间:2023-12-01 02:51:45 26 4
gpt4 key购买 nike

我有一个 React/Redux/Node Express 应用程序来管理患者信息。删除患者就诊后,我在读取新数据时遇到错误。这些功能工作正常,直到我删除与患者相关的最后一次接触。然后出现错误:“未捕获( promise 中)SyntaxError:JSON 输入意外结束。”

为了避免没有数据传递,我尝试检查 204 状态是否返回(无内容),然后创建一个空数组并将其作为 JSON 响应发送,而不是不发送任何数据。这并没有修复错误。

如何处理内容缺失而不在控制台中引发错误?我没有返回 [ ] (空数组),而是尝试返回 ' [ ] ' (带有单引号的空数组)(我认为这是有效的 JSON),但没有运气。

readPatientEncounters(id) {
let url = '/encounters/findPatient/'+id;
Data.readData(url,(response) => {
if (response.length !== 0) {
response.sort(function (a, b) {
return a.date-b.date;
});
}
this.props.dispatch(EncountersActions.readEncounters(response));
}, (errorMessage) => {
console.log('having an error>',errorMessage);
});
}

class Data {
static readData(path, onSuccess, onFailure) {
let headers = new Headers({ 'Content-Type': 'application/json',
'x-access-token': sessionStorage.getItem('jwt') });
let myInit = {
'method': 'GET',
'headers': headers
};
let url = config.server_url + path;
fetch(url, myInit).then(response => {
var jsonResponse = response.json();
if (response.status === 204) {
return [];
} else {
return jsonResponse;
}
}).then(jsonResponse => {
onSuccess(jsonResponse);
return;
}).catch(errorMessage => {
onFailure(errorMessage);
return errorMessage;
});
}
}

最佳答案

解决方案由jaromanda-x提供 (https://stackoverflow.com/users/5053002/jaromanda-x)

无论响应如何,此代码都会转换为 JSON 格式:

 var jsonResponse = response.json();
if (response.status === 204) {
return [];
} else {
return jsonResponse;
}

这解决了这个问题:

if (response.status === 204) {
return [];
} else {
return response.json();
}

关于javascript - 处理空数组并出现错误 "Uncaught (in promise) SyntaxError: Unexpected end of JSON input.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46922442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com