From 69497c3fd7ff560be0e47b4c65076915cca756bc Mon Sep 17 00:00:00 2001 From: jaubourg Date: Sun, 9 Jan 2011 04:28:42 +0100 Subject: [PATCH] Fixes #7881. Setting contentType to false will prevent the Content-Type header from being sent. Unit test added. --- src/ajax.js | 2 +- test/data/headers.php | 10 +++------- test/unit/ajax.js | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index 7988ab1ef..a814d80be 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -559,7 +559,7 @@ jQuery.extend({ } // Set the correct header, if data is being sent - if ( ( s.data && s.hasContent ) || options.contentType ) { + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { requestHeaders[ "content-type" ] = s.contentType; } diff --git a/test/data/headers.php b/test/data/headers.php index c3cb72961..d500b16f4 100644 --- a/test/data/headers.php +++ b/test/data/headers.php @@ -6,15 +6,11 @@ $headers = array(); foreach( $_SERVER as $key => $value ) { - if ( substr( $key , 0 , 5 ) == "HTTP_" ) { - - $key = str_replace( "_" , "-" , substr( $key , 5) ); - $headers[ $key ] = $value; - - } + $key = str_replace( "_" , "-" , substr( $key , 0 , 5 ) == "HTTP_" ? substr( $key , 5 ) : $key ); + $headers[ $key ] = $value; } foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) { - echo "$key: " . $headers[ strtoupper( $key ) ] . "\n"; + echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n"; } diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 9713506ad..d5f2bc0cf 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -276,6 +276,42 @@ test(".ajax() - headers" , function() { }); +test(".ajax() - contentType" , function() { + + expect( 2 ); + + stop(); + + var count = 2; + + function restart() { + if ( ! --count ) { + start(); + } + } + + jQuery.ajax(url("data/headers.php?keys=content-type" ), { + contentType: "test", + success: function( data ) { + strictEqual( data , "content-type: test\n" , "Test content-type is sent when options.contentType is set" ); + }, + complete: function() { + restart(); + } + }); + + jQuery.ajax(url("data/headers.php?keys=content-type" ), { + contentType: false, + success: function( data ) { + strictEqual( data , "content-type: \n" , "Test content-type is not sent when options.contentType===false" ); + }, + complete: function() { + restart(); + } + }); + +}); + test(".ajax() - hash", function() { expect(3);