Ajax泛型请求方法,处理DELETE

时间:2018-02-26 16:01:54

标签: javascript ajax

我有这个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.

0 个答案:

没有答案