From: dmethvin <dave.methvin@gmail.com>
Date: Sat, 23 Oct 2010 17:23:51 +0000 (-0400)
Subject: Allow DELETE requests to have a content body, and properly serialize data to the... 
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=09022e0b09db71259751e7146bb64727615028af;p=jquery.git

Allow DELETE requests to have a content body, and properly serialize data to the url for HEAD requests. Fixes #7285.
---

diff --git a/src/ajax.js b/src/ajax.js
index 915bbaa..6a757eb 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -4,7 +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)$/,
+	rnoContent = /^(?:GET|HEAD)$/,
 	rbracket = /\[\]$/,
 	jsre = /\=\?(&|$)/,
 	rquery = /\?/,
@@ -271,7 +271,7 @@ jQuery.extend({
 			s.cache = false;
 		}
 
-		if ( s.cache === false && type === "GET" ) {
+		if ( s.cache === false && noContent ) {
 			var ts = jQuery.now();
 
 			// try replacing _= if it is there
@@ -281,8 +281,8 @@ jQuery.extend({
 			s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
 		}
 
-		// If data is available, append data to url for get requests
-		if ( s.data && type === "GET" ) {
+		// If data is available, append data to url for GET/HEAD requests
+		if ( s.data && noContent ) {
 			s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
 		}
 
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 14c6218..7344659 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -289,6 +289,32 @@ test("jQuery.ajax - xml: non-namespace elements inside namespaced elements", fun
 	});
 });
 
+test("jQuery.ajax - HEAD requests", function() {
+	expect(2);
+
+	stop();
+	jQuery.ajax({
+		url: url("data/name.html"),
+		type: "HEAD",
+		success: function(data, status, xhr){
+			var h = xhr.getAllResponseHeaders();
+			ok( /Date/i.test(h), 'No Date in HEAD response' );
+			
+			jQuery.ajax({
+				url: url("data/name.html"),
+				data: { whip_it: "good" },
+				type: "HEAD",
+				success: function(data, status, xhr){
+					var h = xhr.getAllResponseHeaders();
+					ok( /Date/i.test(h), 'No Date in HEAD response with data' );
+					start();
+				}
+			});
+		}
+	});
+	
+});
+
 test("jQuery.ajax - beforeSend", function() {
 	expect(1);
 	stop();