我的服务返回304
,但jQuery Ajax似乎将其转换为200 OK
结果。
这是我的要求:
$.ajax({
url: '/api/items',
type: 'GET',
dataType: 'json',
contentType: 'application/json',
ifModified:true,
cache: false,
statusCode: {
304: function() {
alert("not modified"); // does not fire
}
},
complete: function (xhr, status) {
console.log(xhr.status); // 200
}
}
});
使用Fiddler,我可以看到该服务正确返回304
。
为什么jQuery会将其转换为200
?
答案 0 :(得分:3)
如果您想区分它们,请使用success(data, textStatus, jqXHR)
事件并从jqXHR.status
或以其他方式访问jqXHR:
var jqxhr = $.ajax(
...
statusCode: {
200: function() {
if(304 == jqxhr.status)
alert("not modified"); // does not fire
}
},
)
Proper way to handle 304 not modified in jQuery ajax
<强> 修改 强>
其他ajax()
设置:
ifModified:true, // Lets respond `304:notmodified`
但它打破了数据响应:
但是您已经使用过它,它的工作原理仍然不同: - /