* @param Function callback (optional) A function to be executed whenever the data is loaded (parameters: responseText, status and response itself).
* @cat Ajax
*/
+ // DEPRECATED
loadIfModified: function( url, params, callback ) {
this.load( url, params, callback, 1 );
},
if ( jQuery.isFunction( url ) )
return this.bind("load", url);
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
callback = callback || function(){};
// Default to a GET request
complete: function(res, status){
// If successful, inject the HTML into all the matched elements
if ( status == "success" || !ifModified && status == "notmodified" )
- self.html(res.responseText);
-
- self.each( callback, [res.responseText, status, res] );
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div/>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+
+ // Add delay to account for Safari's delay in globalEval
+ setTimeout(function(){
+ self.each( callback, [res.responseText, status, res] );
+ }, 13);
}
});
return this;
*/
serialize: function() {
return jQuery.param( this );
- }
+ },
+
+ // DEPRECATED
+ // This method no longer does anything - all script evaluation is
+ // taken care of within the HTML injection methods.
+ evalScripts: function(){}
});
* @param Function callback (optional) A function to be executed whenever the data is loaded successfully.
* @cat Ajax
*/
+ // DEPRECATED
getIfModified: function( url, data, callback, type ) {
return jQuery.get(url, data, callback, type, 1);
},
* @param Number time How long before an AJAX request times out, in milliseconds.
* @cat Ajax
*/
+ // DEPRECATED
ajaxTimeout: function( timeout ) {
jQuery.ajaxSettings.timeout = timeout;
},
* @see ajaxSetup(Map)
*/
ajax: function( s ) {
- // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
- s = jQuery.extend({}, jQuery.ajaxSettings, s);
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
// if data available
if ( s.data ) {
// convert data if not already a string
- if (s.processData && typeof s.data != "string")
- s.data = jQuery.param(s.data);
+ if ( s.processData && typeof s.data != "string" )
+ s.data = jQuery.param(s.data);
+
// append data to url for get requests
- if( s.type.toLowerCase() == "get" ) {
+ if ( s.type.toLowerCase() == "get" ) {
// "?" + data or "&" + data (in case there are already params)
- s.url += ((s.url.indexOf("?") > -1) ? "&" : "?") + s.data;
+ s.url += (s.url.indexOf("?") > -1 ? "&" : "?") + s.data;
+
// IE likes to send both get and post data, prevent this
s.data = null;
}
s.success( data, status );
// Fire the global callback
- if( s.global )
+ if ( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
} else
jQuery.handleError(s, xml, status);
}
};
- // don't attach the handler to the request, just poll it instead
- var ival = setInterval(onreadystatechange, 13);
-
- // Timeout checker
- if ( s.timeout > 0 )
- setTimeout(function(){
- // Check to see if the request is still happening
- if ( xml ) {
- // Cancel the request
- xml.abort();
-
- if( !requestDone )
- onreadystatechange( "timeout" );
- }
- }, s.timeout);
+ if ( s.async ) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if ( s.timeout > 0 )
+ setTimeout(function(){
+ // Check to see if the request is still happening
+ if ( xml ) {
+ // Cancel the request
+ xml.abort();
+
+ if( !requestDone )
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
+ }
// Send the data
try {