corrade-nucleus-nucleons – Rev 20

Subversion Repositories:
Rev:
define( [
        "../core",
        "../core/stripAndCollapse",
        "../core/parseHTML",
        "../ajax",
        "../traversing",
        "../manipulation",
        "../selector"
], function( jQuery, stripAndCollapse ) {

"use strict";

/**
 * Load a url into a page
 */
jQuery.fn.load = function( url, params, callback ) {
        var selector, type, response,
                self = this,
                off = url.indexOf( " " );

        if ( off > -1 ) {
                selector = stripAndCollapse( url.slice( off ) );
                url = url.slice( 0, off );
        }

        // If it's a function
        if ( jQuery.isFunction( params ) ) {

                // We assume that it's the callback
                callback = params;
                params = undefined;

        // Otherwise, build a param string
        } else if ( params && typeof params === "object" ) {
                type = "POST";
        }

        // If we have elements to modify, make the request
        if ( self.length > 0 ) {
                jQuery.ajax( {
                        url: url,

                        // If "type" variable is undefined, then "GET" method will be used.
                        // Make value of this field explicit since
                        // user can override it through ajaxSetup method
                        type: type || "GET",
                        dataType: "html",
                        data: params
                } ).done( function( responseText ) {

                        // Save response for use in complete callback
                        response = arguments;

                        self.html( selector ?

                                // If a selector was specified, locate the right elements in a dummy div
                                // Exclude scripts to avoid IE 'Permission Denied' errors
                                jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :

                                // Otherwise use the full result
                                responseText );

                // If the request succeeds, this function gets "data", "status", "jqXHR"
                // but they are ignored because response was set above.
                // If it fails, this function gets "jqXHR", "status", "error"
                } ).always( callback && function( jqXHR, status ) {
                        self.each( function() {
                                callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
                        } );
                } );
        }

        return this;
};

} );