我对Javascript,Jquery以及介于两者之间的一切都很陌生。 我一直在尝试理解getJSON
函数 - 文档说:
jQuery.getJSON( url [, data ] [, success ] )
-
url
:包含请求发送到的 URL 的字符串。 -
data
:随请求一起发送到服务器的纯对象或字符串。 -
success
:请求成功时执行的回调函数。
一个典型的例子:
$.getJSON( "ajax/test.json", function( data ) {
var items = [];
$.each( data, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
});
此getJSON
调用中的第二个参数在哪里?
似乎function(data)
正在定义一个在请求成功后调用的函数,这意味着它应该是第三个参数。
但它作为第二个参数传递,紧跟在"ajax/test.json"
参数之后。
getJSON
是否假设如果只有 2 个参数,第二个是 SUCCESS 参数?
文档中的[]
指示参数是可选的。
示例中省略了data
参数。因此,第二个参数是success
函数。
getJSON
函数测试第二个参数的类型,确定它是一个函数,并将其用作success
函数。
getJSON
内部的样子:
getJSON: function( url, data, callback ) {
return jQuery.get( url, data, callback, "json" );
},
以下是 JQuery 如何包装GET
和POST
请求:
jQuery.each( [ "get", "post" ], function( _i, method ) {
jQuery[ method ] = function( url, data, callback, type ) {
// Shift arguments if data argument was omitted
if ( typeof data === "function" ) {
type = type || callback;
callback = data;
data = undefined;
}
// The url can be an options object (which then must have .url)
return jQuery.ajax( jQuery.extend( {
url: url,
type: method,
dataType: type,
data: data,
success: callback
}, jQuery.isPlainObject( url ) && url ) );
};
} );
上面的例子来自 github 上的 jquery 源代码。