diff options
author | Dave Methvin <dave.methvin@gmail.com> | 2010-09-24 17:56:03 -0400 |
---|---|---|
committer | jeresig <jeresig@gmail.com> | 2010-09-24 17:56:03 -0400 |
commit | c4e653237f258ce618ad5a9ec677917166fbed16 (patch) | |
tree | aef71147a63f94a14f0bc5a51d77e50dd2e0504f /src | |
parent | 1130beb72be9d9f5d6bb6f303501da5ec2e3744e (diff) | |
download | jquery-c4e653237f258ce618ad5a9ec677917166fbed16.tar.gz jquery-c4e653237f258ce618ad5a9ec677917166fbed16.zip |
Make sure that requests without a body don't set contentType, and a zero-length body is sent rather than null. Possible fix for #6811 and #6674.
Diffstat (limited to 'src')
-rw-r--r-- | src/ajax.js | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/ajax.js b/src/ajax.js index baf7ae8ef..ef0e1d8f9 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -4,6 +4,7 @@ var jsc = jQuery.now(), rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, rselectTextarea = /^(?:select|textarea)/i, rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rnoContent = /^(?:GET|HEAD|DELETE)$/, rbracket = /\[\]$/, jsre = /\=\?(&|$)/, rquery = /\?/, @@ -204,7 +205,7 @@ jQuery.extend({ ajax: function( origSettings ) { var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings), - jsonp, status, data, type = s.type.toUpperCase(); + jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type); s.url = s.url.replace( rhash, "" ); @@ -355,8 +356,8 @@ jQuery.extend({ // Need an extra try/catch for cross domain requests in Firefox 3 try { - // Set the correct header, if data is being sent - if ( s.data || origSettings && origSettings.contentType ) { + // Set content-type if data specified and content-body is valid for this type + if ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) { xhr.setRequestHeader("Content-Type", s.contentType); } @@ -491,7 +492,7 @@ jQuery.extend({ // Send the data try { - xhr.send( (type !== "GET" && s.data) || null ); + xhr.send( noContent || s.data == null ? null : s.data ); } catch( sendError ) { jQuery.ajax.handleError( s, xhr, null, sendError ); |