Skip to content
Permalink
Browse files
Fixes #8219. Introduces the mimeType option to override content-type …
…header in conversion (and in native xhr when possible). Adds companion overrideMimeType method on jqXHR object (it simply sets the option). Unit test added.
  • Loading branch information
jaubourg committed Feb 9, 2011
1 parent 806d9ce commit f6e1734
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
@@ -426,6 +426,14 @@ jQuery.extend({
return match || null;
},

// Overrides response content-type header
overrideMimeType: function( type ) {
if ( state === 0 ) {
s.mimeType = type;
}
return this;
},

// Cancel the request
abort: function( statusText ) {
statusText = statusText || "abort";
@@ -827,7 +835,7 @@ function ajaxHandleResponses( s, jqXHR, responses ) {
while( dataTypes[ 0 ] === "*" ) {
dataTypes.shift();
if ( ct === undefined ) {
ct = jqXHR.getResponseHeader( "content-type" );
ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
}
}

@@ -87,6 +87,11 @@ if ( jQuery.support.ajax ) {
}
}

// Override mime type if needed
if ( s.mimeType && xhr.overrideMimeType ) {
xhr.overrideMimeType( s.mimeType );
}

// Requested-With header
// Not set for crossDomain requests with no content
// (see why at http://trac.dojotoolkit.org/ticket/9486)
@@ -2169,6 +2169,34 @@ test("jQuery.ajax - transitive conversions", function() {

});

test("jQuery.ajax - overrideMimeType", function() {

expect( 2 );

stop();

jQuery.when(

jQuery.ajax( url("data/json.php") , {
beforeSend: function( xhr ) {
xhr.overrideMimeType( "application/json" );
},
success: function( json ) {
ok( json.data , "Mimetype overriden using beforeSend" );
}
}),

jQuery.ajax( url("data/json.php") , {
mimeType: "application/json",
success: function( json ) {
ok( json.data , "Mimetype overriden using mimeType option" );
}
})

).then( start , start );

});

test("jQuery.ajax - abort in prefilter", function() {

expect( 1 );

0 comments on commit f6e1734

Please sign in to comment.