根据jQuery load()方法api:
.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )
使用下面的工作示例
$('#result').load('ajax/test.html', function() {
alert('Load was performed.');
});
它提供'url'和'callback function'的参数,跳过[data]参数。
示例代码不应该将回调函数视为[data]参数(第二个参数)吗?由于API中定义的参数的顺序。通过遵循API,第一个是url,第二个是数据,第三个是回调。
我不明白为什么代码会起作用。非常困惑。
答案 0 :(得分:5)
它非常清楚地写在jQuery源代码中。
https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js
搜索load: function( url, params, callback )
它检查params(第二个参数),如果它存在,它将调用isFunction
方法,在内部检查参数的类型,如果它是一个函数则返回true。其余的你知道....
这就是isFunction
的样子
答案 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)
该方法将根据数据类型确定第二个参数是回调函数还是数据对象/字符串。