jQuery ajax 204 No Content 的处理

jQuery ajax handling of 204 No Content

我正在编写对 RESTful 服务器的 jQuery ajax 调用,对有效 PUT 请求的响应是 HTTP 204 无内容。响应有 Content Type header 的 application/text 但没有内容 body。因此,似乎 ajax 调用威胁这是一个错误,因此调用 error 函数而不是 done

有没有办法覆盖此行为,并为 204 响应执行 done 而不管内容 body?

我终于设法通过向 ajax request settings

添加过滤器来解决问题
dataFilter: function(data,type) {
    return data || "{}"
}

这可确保 JSON.parse 在 ajax 内调用响应内容时永远不会收到空内容。

最好的方法是在 ajax 中调用 statusCode。并在特定的 statusCode.

中制作一个运行器代码
new Promise((resolve, reject) => {
    var settings = {
            "URL": "<your link>",
            "method": "POST",
            "timeout": 0,
            "headers": {
            "Content-Type": "application/json"
            },
        "data": JSON.stringify({
            "email": email,
            "user_name": user_name,
        }),
        "statusCode": {
            200: function (data) {
                console.log("Request completed 200");
                resolve(data || {statusCode: 200});
            }, 
            201: function (data) {
                console.log("Request completed 201");
                resolve(data || {statusCode: 201});
            },
            204: function (data) {
                console.log("Request completed 204");
                resolve(data || { statusCode: 204});
            }
        }
    };

    $.ajax(settings)
});