How to get 304 from jQuery Ajax instead of 200?

jquery

Solution

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:

http://forum.jquery.com/topic/how-to-fix-browser-cache-and-notmodified-respond-for-json-jquery-ajax-ifmodified-true-break-on-data-respond

but You've used it and it still works differently :-/

Problem

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`?

Original source

Related problems