2

jQuery load() メソッド api によると:

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )
  1. 第 1 パラメータは URL です
  2. 2 番目のパラメーターは、サーバーに送信されるマップまたは文字列です。
  3. 第3引数はコールバック関数です。

以下の実際の例で

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});

'url' と 'callback function' の引数を指定すると、[data] 引数はスキップされます。

サンプル コードでは、コールバック関数を [data] 引数 (第 2 パラメーター) として扱うべきではありませんか? パラメータが API で定義された順序のためです。API に従うと、1 番目が url、2 番目がデータ、3 番目がコールバックです。

コードが機能する理由がわかりません。非常に混乱。

4

5 に答える 5

5

jQuery のソース コードに非常に明確に記述されています。

https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js

検索するload: function( url, params, callback )

params (2 番目のパラメーター) をチェックし、存在する場合isFunctionは、引数の型を内部的にチェックし、関数の場合は true を返すメソッドを呼び出します。あなたが知っている残り....

ここに画像の説明を入力

こんなisFunction感じです

ここに画像の説明を入力

于 2012-05-28T15:48:47.127 に答える
2

いいえ、パラメータのデータ型を検査します。2 番目のパラメーターとして関数が見つかった場合は、それをコールバックとして使用します。

パラメータの位置と順序は、典型的なユースケースを念頭に置いて考えられており、パラメータをスキップするために null 値を指定する代わりに.load('url', null, null, function() {}) ; スキップされたときにパラメータが「シフト」することを想像してみてください。

これは、.load だけでなく、多くの関数に適用されます。

于 2012-05-28T15:46:18.453 に答える
1

Github で jquery のソース ファイル ajax.js を確認してください: https://github.com/jquery/jquery/blob/master/src/ajax.js#L178

ここでは、2 番目の引数が関数かどうかをチェックします。はいの場合は、それをコールバックとして受け取り、params を として受け取りますundefined

于 2012-05-28T15:50:34.437 に答える
1

[]ドキュメント内のパラメータを囲む角括弧 ( ) は、それがオプションであることを示しています。したがって、上記のドキュメントによると、あなたの例は完全に有効です。

于 2012-05-28T15:46:19.790 に答える
0

仕様の括弧は、パラメーターがオプションであることを意味するため、次の形式のいずれかを使用できます。

.load(url, data, complete)
.load(url, data)
.load(url, complete)
.load(url)

このメソッドは、データ型に応じて、2 番目のパラメーターがコールバック関数であるかデータ オブジェクト/文字列であるかを判断します。

于 2012-05-28T15:51:53.327 に答える