1

我正在编写ajax对 RESTful 服务器的 jQuery 调用,对有效 PUT 请求的响应是 HTTP 204 No Content。响应有一个Content Type标题,application/text但没有内容正文。因此,该ajax调用似乎将 this 视为错误,因此error调用该函数而不是done.

有没有办法覆盖这种行为,并执行done204 响应而不管内容正文如何?

4

2 回答 2

3

我终于设法通过向ajax 请求设置添加过滤器来解决问题

dataFilter: function(data,type) {
    return data || "{}"
}

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

于 2018-07-11T06:47:28.640 回答
1

最好的方法是拨打statusCodein ajax。并在特定的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)
});
于 2020-05-31T18:34:36.730 回答