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 = /\?/,
var customJsonp = window[ jsonp ];
window[ jsonp ] = function( tmp ) {
- data = tmp;
- jQuery.ajax.handleSuccess( s, xhr, status, data );
- jQuery.ajax.handleComplete( s, xhr, status, data );
-
if ( jQuery.isFunction( customJsonp ) ) {
customJsonp( tmp );
delete window[ jsonp ];
} catch( jsonpError ) {}
}
+
+ data = tmp;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
if ( head ) {
head.removeChild( script );
s.cache = false;
}
- if ( s.cache === false && type === "GET" ) {
+ if ( s.cache === false && noContent ) {
var ts = jQuery.now();
// try replacing _= if it is there
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;
}
// Watch for a new set of requests
- if ( s.global && jQuery.ajax.active++ === 0 ) {
+ if ( s.global && jQuery.active++ === 0 ) {
jQuery.event.trigger( "ajaxStart" );
}
// Matches an absolute URL, and saves the domain
var parts = rurl.exec( s.url ),
- remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
+ remote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host);
// If we're requesting a remote document
// and trying to load JSON or Script with a GET
if ( !done && (!this.readyState ||
this.readyState === "loaded" || this.readyState === "complete") ) {
done = true;
- jQuery.ajax.handleSuccess( s, xhr, status, data );
- jQuery.ajax.handleComplete( s, xhr, status, data );
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
}
- if ( jQuery.ajax.etag[s.url] ) {
- xhr.setRequestHeader("If-None-Match", jQuery.ajax.etag[s.url]);
+ if ( jQuery.etag[s.url] ) {
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
}
}
// Allow custom headers/mimetypes and early abort
if ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {
// Handle the global AJAX counter
- if ( s.global && jQuery.ajax.active-- === 1 ) {
+ if ( s.global && jQuery.active-- === 1 ) {
jQuery.event.trigger( "ajaxStop" );
}
}
if ( s.global ) {
- jQuery.ajax.triggerGlobal( s, "ajaxSend", [xhr, s] );
+ jQuery.triggerGlobal( s, "ajaxSend", [xhr, s] );
}
// Wait for a response to come back
// Opera doesn't call onreadystatechange before this point
// so we simulate the call
if ( !requestDone ) {
- jQuery.ajax.handleComplete( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
}
requestDone = true;
status = isTimeout === "timeout" ?
"timeout" :
- !jQuery.ajax.httpSuccess( xhr ) ?
+ !jQuery.httpSuccess( xhr ) ?
"error" :
- s.ifModified && jQuery.ajax.httpNotModified( xhr, s.url ) ?
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
"notmodified" :
"success";
// Watch for, and catch, XML document parse errors
try {
// process the data (runs the xml through httpData regardless of callback)
- data = jQuery.ajax.httpData( xhr, s.dataType, s );
+ data = jQuery.httpData( xhr, s.dataType, s );
} catch( parserError ) {
status = "parsererror";
errMsg = parserError;
if ( status === "success" || status === "notmodified" ) {
// JSONP handles its own success callback
if ( !jsonp ) {
- jQuery.ajax.handleSuccess( s, xhr, status, data );
+ jQuery.handleSuccess( s, xhr, status, data );
}
} else {
- jQuery.ajax.handleError( s, xhr, status, errMsg );
+ jQuery.handleError( s, xhr, status, errMsg );
}
// Fire the complete handlers
if ( !jsonp ) {
- jQuery.ajax.handleComplete( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
}
if ( isTimeout === "timeout" ) {
}
};
- // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
+ // Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)
// Opera doesn't fire onreadystatechange at all on abort
try {
var oldAbort = xhr.abort;
xhr.abort = function() {
if ( xhr ) {
- oldAbort.call( xhr );
+ // oldAbort has no call property in IE7 so
+ // just do it this way, which works in all
+ // browsers
+ Function.prototype.call.call( oldAbort, xhr );
}
onreadystatechange( "abort" );
xhr.send( noContent || s.data == null ? null : s.data );
} catch( sendError ) {
- jQuery.ajax.handleError( s, xhr, null, sendError );
+ jQuery.handleError( s, xhr, null, sendError );
// Fire the complete handlers
- jQuery.ajax.handleComplete( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
}
// firefox 1.5 doesn't fire statechange for sync requests
}
}
-jQuery.extend( jQuery.ajax, {
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
// Counter for holding the number of active queries
active: 0,
// Fire the global callback
if ( s.global ) {
- jQuery.ajax.triggerGlobal( s, "ajaxError", [xhr, s, e] );
+ jQuery.triggerGlobal( s, "ajaxError", [xhr, s, e] );
}
},
// Fire the global callback
if ( s.global ) {
- jQuery.ajax.triggerGlobal( s, "ajaxSuccess", [xhr, s] );
+ jQuery.triggerGlobal( s, "ajaxSuccess", [xhr, s] );
}
},
// The request was completed
if ( s.global ) {
- jQuery.ajax.triggerGlobal( s, "ajaxComplete", [xhr, s] );
+ jQuery.triggerGlobal( s, "ajaxComplete", [xhr, s] );
}
// Handle the global AJAX counter
- if ( s.global && jQuery.ajax.active-- === 1 ) {
+ if ( s.global && jQuery.active-- === 1 ) {
jQuery.event.trigger( "ajaxStop" );
}
},
etag = xhr.getResponseHeader("Etag");
if ( lastModified ) {
- jQuery.ajax.lastModified[url] = lastModified;
+ jQuery.lastModified[url] = lastModified;
}
if ( etag ) {
- jQuery.ajax.etag[url] = etag;
+ jQuery.etag[url] = etag;
}
return xhr.status === 304;
if ( window.location.protocol !== "file:" ) {
try {
return new window.XMLHttpRequest();
- } catch(e) {}
+ } catch(xhrError) {}
}
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
- } catch(e) {}
+ } catch(activeError) {}
};
}
// Does this browser support XHR requests?
jQuery.support.ajax = !!jQuery.ajaxSettings.xhr();
-// For backwards compatibility
-jQuery.extend( jQuery.ajax );
-
})( jQuery );