zhaojs
2023-06-09 357deb88eb2cbb0c049d20c1f2261b3b142ea5b6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
define( [
    "../core",
    "../core/parseHTML",
    "../ajax",
    "../traversing",
    "../manipulation",
    "../selector",
 
    // Optional event/alias dependency
    "../event/alias"
], function( jQuery ) {
 
// Keep a copy of the old load method
var _load = jQuery.fn.load;
 
/**
 * Load a url into a page
 */
jQuery.fn.load = function( url, params, callback ) {
    if ( typeof url !== "string" && _load ) {
        return _load.apply( this, arguments );
    }
 
    var selector, type, response,
        self = this,
        off = url.indexOf( " " );
 
    if ( off > -1 ) {
        selector = jQuery.trim( 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;
};
 
} );