为函数参数分配参数

时间:2014-10-10 02:15:13

标签: javascript jquery ajax

我已编辑此问题以澄清此问题与如何从ajax函数调用返回值无关。它问为什么,当只有2个参数传递给$ getJSON时,第二个参数似乎被视为3ed。话虽如此,请考虑以下代码片段:

<script>
 var fName;
 $.getJSON("work1.json", json);
 function json(data)
 {
  fName = data['fname'];
 }
</script>

请注意,$ .getJASON函数(具有一个必需参数和两个可选参数)仅提供2个参数。第一个参数是必需的“url”参数。据我所知,第二个参数是发送到服务器的数据,3ed参数指定请求成功时要运行的函数。由于只传递了2个参数,我认为它们分别用于第1和第2个参数。第一个显然是网址。第二个表现就好像它是3ed参数。这是为什么?我认为传递给函数的参数按顺序分配给函数的参数,直到用完为止。我错过了什么?

1 个答案:

答案 0 :(得分:0)

  

我认为传递给函数的参数按顺序分配给函数的参数,直到用完为止。

是的,他们是。但是,jQuery检查第二个参数是否为函数,并将其用作callback以防

getJSON: function( url, data, callback ) {
    return jQuery.get( url, data, callback, "json" );
},
get: function( url, data, callback, type ) {
    // Shift arguments if data argument was omitted
    if ( jQuery.isFunction( data ) ) {
        type = type || callback;
        callback = data;
        data = undefined;
    }
    return jQuery.ajax({
        url: url,
        type: method,
        dataType: type,
        data: data,
        success: callback
    });
}

(来自https://github.com/jquery/jquery/blob/master/src/ajax.js#L766