blob: defdb01745482263fead140eab4beb15b9c04796 [file] [log] [blame]
Copybara botbe50d492023-11-30 00:16:42 +01001define( [
2 "../core",
3 "../core/stripAndCollapse",
4 "../var/isFunction",
5 "../core/parseHTML",
6 "../ajax",
7 "../traversing",
8 "../manipulation",
9 "../selector"
10], function( jQuery, stripAndCollapse, isFunction ) {
11
12"use strict";
13
14/**
15 * Load a url into a page
16 */
17jQuery.fn.load = function( url, params, callback ) {
18 var selector, type, response,
19 self = this,
20 off = url.indexOf( " " );
21
22 if ( off > -1 ) {
23 selector = stripAndCollapse( url.slice( off ) );
24 url = url.slice( 0, off );
25 }
26
27 // If it's a function
28 if ( isFunction( params ) ) {
29
30 // We assume that it's the callback
31 callback = params;
32 params = undefined;
33
34 // Otherwise, build a param string
35 } else if ( params && typeof params === "object" ) {
36 type = "POST";
37 }
38
39 // If we have elements to modify, make the request
40 if ( self.length > 0 ) {
41 jQuery.ajax( {
42 url: url,
43
44 // If "type" variable is undefined, then "GET" method will be used.
45 // Make value of this field explicit since
46 // user can override it through ajaxSetup method
47 type: type || "GET",
48 dataType: "html",
49 data: params
50 } ).done( function( responseText ) {
51
52 // Save response for use in complete callback
53 response = arguments;
54
55 self.html( selector ?
56
57 // If a selector was specified, locate the right elements in a dummy div
58 // Exclude scripts to avoid IE 'Permission Denied' errors
59 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
60
61 // Otherwise use the full result
62 responseText );
63
64 // If the request succeeds, this function gets "data", "status", "jqXHR"
65 // but they are ignored because response was set above.
66 // If it fails, this function gets "jqXHR", "status", "error"
67 } ).always( callback && function( jqXHR, status ) {
68 self.each( function() {
69 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
70 } );
71 } );
72 }
73
74 return this;
75};
76
77} );