2

根据jQuery load() 方法api:

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )
  1. 第一个参数是网址
  2. 第二个参数是发送到服务器的地图或字符串
  3. 第三个参数是回调函数。

使用下面的工作示例

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

它提供“url”和“回调函数”的参数,[data] 参数被跳过。

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

我不明白为什么代码会起作用。很迷茫。

4

5 回答 5

5

它在 jQuery 源代码中写得很清楚。

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

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

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

在此处输入图像描述

这是isFunction看起来的样子

在此处输入图像描述

于 2012-05-28T15:48:47.127 回答
2

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

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

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

于 2012-05-28T15:46:18.453 回答
1

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

于 2012-05-28T15:46:19.790 回答
1

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

在这里它检查第二个参数是否是函数。如果是,则将其作为回调并将参数作为undefined.

于 2012-05-28T15:50:34.437 回答
0

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

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

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

于 2012-05-28T15:51:53.327 回答