aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Methvin <dave.methvin@gmail.com>2010-09-24 17:56:03 -0400
committerjeresig <jeresig@gmail.com>2010-09-24 17:56:03 -0400
commitc4e653237f258ce618ad5a9ec677917166fbed16 (patch)
treeaef71147a63f94a14f0bc5a51d77e50dd2e0504f /src
parent1130beb72be9d9f5d6bb6f303501da5ec2e3744e (diff)
downloadjquery-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.js9
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 );