Commit 95291b44 authored by Oleg's avatar Oleg Committed by Rick Waldron waldron.rick@gmail.com

jQuery.fn.load optimization

parent 6bed348a
...@@ -158,72 +158,63 @@ jQuery.fn.extend({ ...@@ -158,72 +158,63 @@ jQuery.fn.extend({
load: function( url, params, callback ) { load: function( url, params, callback ) {
if ( typeof url !== "string" && _load ) { if ( typeof url !== "string" && _load ) {
return _load.apply( this, arguments ); return _load.apply( this, arguments );
}
// Don't do a request if no elements are being requested // Don't do a request if no elements are being requested
} else if ( !this.length ) { if ( !this.length ) {
return this; return this;
} }
var off = url.indexOf( " " ); var selector, type,
self = this,
off = url.indexOf(" ");
if ( off >= 0 ) { if ( off >= 0 ) {
var selector = url.slice( off, url.length ); selector = url.slice( off, url.length );
url = url.slice( 0, off ); url = url.slice( 0, off );
} }
// Default to a GET request // If it's a function
var type = "GET"; if ( jQuery.isFunction( params ) ) {
// If the second parameter was provided // We assume that it's the callback
if ( params ) { callback = params;
// If it's a function params = undefined;
if ( jQuery.isFunction( params ) ) {
// We assume that it's the callback
callback = params;
params = undefined;
// Otherwise, build a param string // Otherwise, build a param string
} else if ( typeof params === "object" ) { } else if ( typeof params === "object" ) {
type = "POST"; type = "POST";
}
} }
var self = this;
// Request the remote document // Request the remote document
jQuery.ajax({ jQuery.ajax({
url: url, url: url,
// if "type" variable is undefined, then "GET" method will be used
type: type, type: type,
dataType: "html", dataType: "html",
data: params, data: params
// Complete callback (responseText is used internally) }).done(function( responseText ) {
complete: function( jqXHR, status, responseText ) {
// Store the response as specified by the jqXHR object
responseText = jqXHR.responseText;
// If successful, inject the HTML into all the matched elements
if ( jqXHR.isResolved() ) {
// #4825: Get the actual response in case
// a dataFilter is present in ajaxSettings
jqXHR.done(function( r ) {
responseText = r;
});
// 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(responseText.replace(rscript, ""))
// Locate the specified elements
.find(selector) :
// If not, just inject the full result
responseText );
}
if ( callback ) { // See if a selector was specified
self.each( callback, [ responseText, status, jqXHR ] ); 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( responseText.replace( rscript, "" ) )
// Locate the specified elements
.find( selector ) :
// If not, just inject the full result
responseText );
}).always(function() {
if ( callback ) {
self.each( callback, arguments );
} }
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment