Skip to content

Commit 09022e0

Browse files
dmethvinjeresig
authored andcommitted
Allow DELETE requests to have a content body, and properly serialize data to the url for HEAD requests. Fixes #7285.
1 parent 974b5ae commit 09022e0

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

src/ajax.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var jsc = jQuery.now(),
44
rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
55
rselectTextarea = /^(?:select|textarea)/i,
66
rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
7-
rnoContent = /^(?:GET|HEAD|DELETE)$/,
7+
rnoContent = /^(?:GET|HEAD)$/,
88
rbracket = /\[\]$/,
99
jsre = /\=\?(&|$)/,
1010
rquery = /\?/,
@@ -271,7 +271,7 @@ jQuery.extend({
271271
s.cache = false;
272272
}
273273

274-
if ( s.cache === false && type === "GET" ) {
274+
if ( s.cache === false && noContent ) {
275275
var ts = jQuery.now();
276276

277277
// try replacing _= if it is there
@@ -281,8 +281,8 @@ jQuery.extend({
281281
s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
282282
}
283283

284-
// If data is available, append data to url for get requests
285-
if ( s.data && type === "GET" ) {
284+
// If data is available, append data to url for GET/HEAD requests
285+
if ( s.data && noContent ) {
286286
s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
287287
}
288288

test/unit/ajax.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,32 @@ test("jQuery.ajax - xml: non-namespace elements inside namespaced elements", fun
289289
});
290290
});
291291

292+
test("jQuery.ajax - HEAD requests", function() {
293+
expect(2);
294+
295+
stop();
296+
jQuery.ajax({
297+
url: url("data/name.html"),
298+
type: "HEAD",
299+
success: function(data, status, xhr){
300+
var h = xhr.getAllResponseHeaders();
301+
ok( /Date/i.test(h), 'No Date in HEAD response' );
302+
303+
jQuery.ajax({
304+
url: url("data/name.html"),
305+
data: { whip_it: "good" },
306+
type: "HEAD",
307+
success: function(data, status, xhr){
308+
var h = xhr.getAllResponseHeaders();
309+
ok( /Date/i.test(h), 'No Date in HEAD response with data' );
310+
start();
311+
}
312+
});
313+
}
314+
});
315+
316+
});
317+
292318
test("jQuery.ajax - beforeSend", function() {
293319
expect(1);
294320
stop();

0 commit comments

Comments
 (0)