X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=97d40391d905f0a6e3ad46ee84681617658c9d2e;hb=f9f9ee52e16f37900296e06982a7dccba89c5a78;hp=aa4e3ec450ec519621f24f72e0c154072f571a51;hpb=ba9e0fc177841bd74cc5ea4e52f09cd87d747bf5;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index aa4e3ec..97d4039 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -1,14 +1,16 @@ (function( jQuery ) { var jsc = jQuery.now(), - rscript = //gi, - rselectTextarea = /select|textarea/i, - rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i, + rscript = /)<[^<]*)*<\/script>/gi, + rselectTextarea = /^(?:select|textarea)/i, + rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rbracket = /\[\]$/, jsre = /\=\?(&|$)/, rquery = /\?/, - rts = /(\?|&)_=.*?(&|$)/, + rts = /([?&])_=[^&]*(&?)/, rurl = /^(\w+:)?\/\/([^\/?#]+)/, r20 = /%20/g, + rhash = /#[^#]*$/, // Keep a copy of the old load method _load = jQuery.fn.load; @@ -61,7 +63,7 @@ jQuery.fn.extend({ // See if a selector was specified self.html( selector ? // Create a dummy div to hold the results - jQuery("
") + jQuery("
") // inject the contents of the document in, removing the scripts // to avoid any 'Permission Denied' errors in IE .append(res.responseText.replace(rscript, "")) @@ -204,6 +206,7 @@ jQuery.extend({ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings), jsonp, status, data, type = s.type.toUpperCase(); + s.url = s.url.replace( rhash, "" ); s.context = origSettings && origSettings.context || s; // convert data if not already a string @@ -542,7 +545,7 @@ function buildParams( prefix, obj, traditional, add ) { if ( jQuery.isArray(obj) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { - if ( traditional || /\[\]$/.test( prefix ) ) { + if ( traditional || rbracket.test( prefix ) ) { // Treat each array item as a scalar. add( prefix, v ); @@ -629,11 +632,8 @@ jQuery.extend( jQuery.ajax, { try { // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450 return !xhr.status && location.protocol === "file:" || - ( xhr.status >= 200 && xhr.status < 300 ) || - xhr.status === 304 || xhr.status === 1223 || - // Opera returns a status of 0 for redirects - - // We can detect this by the fact that Opera also doesn't return any headers - xhr.status === 0 && !xhr.getAllResponseHeaders(); + xhr.status >= 200 && xhr.status < 300 || + xhr.status === 304 || xhr.status === 1223; } catch(e) {} return false; @@ -652,8 +652,7 @@ jQuery.extend( jQuery.ajax, { jQuery.ajax.etag[url] = etag; } - // Opera returns 0 when status is 304 - return xhr.status === 304 || xhr.status === 0 && !xhr.getAllResponseHeaders(); + return xhr.status === 304; }, httpData: function( xhr, type, s ) {