Fixes #7881. Setting contentType to false will prevent the Content-Type header from...
authorjaubourg <j@ubourg.net>
Sun, 9 Jan 2011 03:28:42 +0000 (04:28 +0100)
committerjaubourg <j@ubourg.net>
Sun, 9 Jan 2011 03:28:42 +0000 (04:28 +0100)
src/ajax.js
test/data/headers.php
test/unit/ajax.js

index 7988ab1..a814d80 100644 (file)
@@ -559,7 +559,7 @@ jQuery.extend({
                        }
 
                        // Set the correct header, if data is being sent
                        }
 
                        // 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;
                        }
 
                                requestHeaders[ "content-type" ] = s.contentType;
                        }
 
index c3cb729..d500b16 100644 (file)
@@ -6,15 +6,11 @@ $headers = array();
 
 foreach( $_SERVER as $key => $value ) {
 
 
 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 ) {
 
 }
 
 foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) {
-       echo "$key: " . $headers[ strtoupper( $key ) ] . "\n";
+       echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n";
 }
 }
index 9713506..d5f2bc0 100644 (file)
@@ -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);
 
 test(".ajax() - hash", function() {
        expect(3);