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)
});
我正在编写对 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)
});