jQuery load()方法参数用法?

时间:2012-05-28 15:43:59

标签: javascript jquery

根据jQuery load()方法api:

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )
  1. 第一个参数是url
  2. 第二个参数是发送到服务器的地图或字符串
  3. 第三个参数是回调函数。
  4. 使用下面的工作示例

    $('#result').load('ajax/test.html', function() {
      alert('Load was performed.');
    });
    

    它提供'url'和'callback function'的参数,跳过[data]参数。

    示例代码不应该将回调函数视为[data]参数(第二个参数)吗?由于API中定义的参数的顺序。通过遵循API,第一个是url,第二个是数据,第三个是回调。

    我不明白为什么代码会起作用。非常困惑。

5 个答案:

答案 0 :(得分:5)

它非常清楚地写在jQuery源代码中。

https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js

搜索load: function( url, params, callback )

它检查params(第二个参数),如果它存在,它将调用isFunction方法,在内部检查参数的类型,如果它是一个函数则返回true。其余的你知道....

enter image description here

这就是isFunction的样子

enter image description here

答案 1 :(得分:2)

不,它检查参数的数据类型。如果它找到一个函数作为第二个参数,那么它将它用作回调。

参数的位置和顺序已经考虑了典型的用例,而不是必须给出一个空值来跳过参数.load('url',null,null,function() {});你可以想象跳过时参数“移位”。

这适用于很多功能而不仅仅是.load。

答案 2 :(得分:1)

文档中参数周围的方括号([])表示它是可选的。因此,根据上述文档,您的示例完全有效。

答案 3 :(得分:1)

在Github中查看jquery的源文件ajax.js:https://github.com/jquery/jquery/blob/master/src/ajax.js#L178

这里检查第二个参数是否起作用。如果是,则将其作为回调并将参数设为undefined

答案 4 :(得分:0)

规范中的括号表示参数是可选的,因此您可以使用以下任何一种形式:

.load(url, data, complete)
.load(url, data)
.load(url, complete)
.load(url)

该方法将根据数据类型确定第二个参数是回调函数还是数据对象/字符串。