Reputation: 13089
My services returns a 304
but jQuery Ajax seems to convert it to a 200 OK
result.
This is my request:
$.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
}
}
});
With Fiddler I can see that the service returns 304
correctly.
Why does jQuery convert it to a 200
?
Upvotes: 6
Views: 5593
Reputation: 5229
If You want to distinguish between them, use success(data, textStatus, jqXHR)
event and read it from jqXHR.status
or access jqXHR other way:
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
edit
additional ajax()
setting:
ifModified:true, // Lets respond `304:notmodified`
but it breaks data reponse:
but You've used it and it still works differently :-/
Upvotes: 3