@@ -4,6 +4,7 @@ var jsc = jQuery.now(),
4
4
rscript = / < s c r i p t \b [ ^ < ] * (?: (? ! < \/ s c r i p t > ) < [ ^ < ] * ) * < \/ s c r i p t > / gi,
5
5
rselectTextarea = / ^ (?: s e l e c t | t e x t a r e a ) / i,
6
6
rinput = / ^ (?: c o l o r | d a t e | d a t e t i m e | e m a i l | h i d d e n | m o n t h | n u m b e r | p a s s w o r d | r a n g e | s e a r c h | t e l | t e x t | t i m e | u r l | w e e k ) $ / i,
7
+ rnoContent = / ^ (?: G E T | H E A D | D E L E T E ) $ / ,
7
8
rbracket = / \[ \] $ / ,
8
9
jsre = / \= \? ( & | $ ) / ,
9
10
rquery = / \? / ,
@@ -204,7 +205,7 @@ jQuery.extend({
204
205
205
206
ajax : function ( origSettings ) {
206
207
var s = jQuery . extend ( true , { } , jQuery . ajaxSettings , origSettings ) ,
207
- jsonp , status , data , type = s . type . toUpperCase ( ) ;
208
+ jsonp , status , data , type = s . type . toUpperCase ( ) , noContent = rnoContent . test ( type ) ;
208
209
209
210
s . url = s . url . replace ( rhash , "" ) ;
210
211
@@ -355,8 +356,8 @@ jQuery.extend({
355
356
356
357
// Need an extra try/catch for cross domain requests in Firefox 3
357
358
try {
358
- // Set the correct header, if data is being sent
359
- if ( s . data || origSettings && origSettings . contentType ) {
359
+ // Set content-type if data specified and content-body is valid for this type
360
+ if ( ( s . data != null && ! noContent ) || ( origSettings && origSettings . contentType ) ) {
360
361
xhr . setRequestHeader ( "Content-Type" , s . contentType ) ;
361
362
}
362
363
@@ -491,7 +492,7 @@ jQuery.extend({
491
492
492
493
// Send the data
493
494
try {
494
- xhr . send ( ( type ! == "GET" && s . data ) || null ) ;
495
+ xhr . send ( noContent || s . data == null ? null : s . data ) ;
495
496
496
497
} catch ( sendError ) {
497
498
jQuery . ajax . handleError ( s , xhr , null , sendError ) ;
0 commit comments