基本 getJSON 问题 - 第二个参数似乎总是被忽略



我对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 如何包装GETPOST请求:

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 源代码。

最新更新