我已编辑此问题以澄清此问题与如何从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参数。这是为什么?我认为传递给函数的参数按顺序分配给函数的参数,直到用完为止。我错过了什么?
答案 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)