我有这个Ajax功能:
function ajaxRequest(url, data, success, method) {
return fetch(url, {
method: method,
body: JSON.stringify(data),
headers: new Headers({
'Content-Type': 'application/json'
})
}).then(res => res.json())
.then(response => {
if (response.status !== success) {
throw response.status;
}
return response;
})
.catch(error => console.error('Error:', error, 'if you see this message, please report this error.'))
}
我传递4个参数:
url
:请求发送到的API端点
data
:API消耗的数据。这可以是一个对象数组,或者在这种情况下,是一个对象的ID
succes
:服务器在执行请求时应返回的成功代码。在这种情况下204
method
:Ajax应使用的方法,在本例中为DELETE
。
现在,当我使用此函数发送DELETE
请求时,它会抛出错误。这是因为服务器按预期返回204
,但除此之外它是一个空响应。因此它尝试将其解析为JSON,但由于无法解析而失败。如果服务器返回204
,我想事先检查一下,如果是,请将响应传递给前端。但如果它还没有,我仍然想把它解析为JSON。
我尝试用if语句实现这一点,但最终我做了204
的工作并打破了其余部分。我还考虑过为删除请求创建一个新的Ajax请求方法,但对我来说,似乎你可以使这项工作有些如何。我是Ajax的新手,我不太懂我应该使用的语法。如果有人能告诉我如何做到这一点,我将不胜感激。
发送删除请求时收到的错误:
ajax.js:15 Error: SyntaxError: Unexpected end of JSON input
at fetch.then.res (ajax.js:8)
at <anonymous> if you see this message, please report this error.