X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=src%2Fajax.js;h=244397f4c9280c54cc10fb7b9c804c177b7b5d83;hb=3f5ff3097c315456fe92c9b1e4578590e1eb8648;hp=ca17f4f0d807fd411a3d9bc3031e4c6a6e9133fe;hpb=d3d8f3561b833781a3b7735685e1df48d8e7a60a;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index ca17f4f..244397f 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -1,7 +1,10 @@ jQuery.fn.extend({ + // Keep a copy of the old load + _load: jQuery.fn.load, + load: function( url, params, callback ) { - if ( jQuery.isFunction( url ) ) - return this.bind("load", url); + if ( typeof url != 'string' ) + return this._load( url ); var off = url.indexOf(" "); if ( off >= 0 ) { @@ -68,8 +71,8 @@ jQuery.fn.extend({ jQuery.makeArray(this.elements) : this; }) .filter(function(){ - return this.name && !this.disabled && - (this.checked || /select|textarea/i.test(this.nodeName) || + return this.name && !this.disabled && + (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type)); }) .map(function(i, elem){ @@ -91,7 +94,7 @@ jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".sp }; }); -var jsc = (new Date).getTime(); +var jsc = now(); jQuery.extend({ get: function( url, data, callback, type ) { @@ -100,7 +103,7 @@ jQuery.extend({ callback = data; data = null; } - + return jQuery.ajax({ type: "GET", url: url, @@ -156,7 +159,7 @@ jQuery.extend({ _default: "*/*" } }, - + // Last-Modified header cache for next request lastModified: {}, @@ -211,7 +214,7 @@ jQuery.extend({ s.cache = false; if ( s.cache === false && s.type.toLowerCase() == "get" ) { - var ts = (new Date()).getTime(); + var ts = now(); // try replacing _= if it is there var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); // if nothing was replaced, add timestamp to the end @@ -245,7 +248,7 @@ jQuery.extend({ // Attach handlers for all browsers script.onload = script.onreadystatechange = function(){ - if ( !done && (!this.readyState || + if ( !done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") ) { done = true; success(); @@ -298,7 +301,7 @@ jQuery.extend({ xml.abort(); return false; } - + if ( s.global ) jQuery.event.trigger("ajaxSend", [xml, s]); @@ -307,13 +310,13 @@ jQuery.extend({ // The transfer is complete and the data is available, or the request timed out if ( !requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout") ) { requestDone = true; - + // clear poll interval if (ival) { clearInterval(ival); ival = null; } - + status = isTimeout == "timeout" && "timeout" || !jQuery.httpSuccess( xml ) && "error" || s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" || @@ -336,13 +339,13 @@ jQuery.extend({ try { modRes = xml.getResponseHeader("Last-Modified"); } catch(e) {} // swallow exception thrown by FF if header is not available - + if ( s.ifModified && modRes ) jQuery.lastModified[s.url] = modRes; // JSONP handles its own success callback if ( !jsonp ) - success(); + success(); } else jQuery.handleError(s, xml, status); @@ -354,10 +357,10 @@ jQuery.extend({ xml = null; } }; - + if ( s.async ) { // don't attach the handler to the request, just poll it instead - var ival = setInterval(onreadystatechange, 13); + var ival = setInterval(onreadystatechange, 13); // Timeout checker if ( s.timeout > 0 ) @@ -366,20 +369,20 @@ jQuery.extend({ if ( xml ) { // Cancel the request xml.abort(); - + if( !requestDone ) onreadystatechange( "timeout" ); } }, s.timeout); } - + // Send the data try { xml.send(s.data); } catch(e) { jQuery.handleError(s, xml, null, e); } - + // firefox 1.5 doesn't fire statechange for sync requests if ( !s.async ) onreadystatechange(); @@ -407,7 +410,7 @@ jQuery.extend({ if ( s.global && ! --jQuery.active ) jQuery.event.trigger( "ajaxStop" ); } - + // return XMLHttpRequest to allow aborting the request etc. return xml; }, @@ -448,9 +451,9 @@ jQuery.extend({ }, httpData: function( r, type ) { - var ct = r.getResponseHeader("content-type"); - var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0; - var data = xml ? r.responseXML : r.responseText; + var ct = r.getResponseHeader("content-type"), + xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0, + data = xml ? r.responseXML : r.responseText; if ( xml && data.documentElement.tagName == "parsererror" ) throw "parsererror"; @@ -489,7 +492,7 @@ jQuery.extend({ s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) ); }); else - s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) ); + s.push( encodeURIComponent(j) + "=" + encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] ) ); // Return the resulting serialization return s.join("&").replace(/%20/g, "+");