2

jqueryのドキュメントページでこの小さな例を見つけました。私はいつも ajax 関数から値を返そうとしましたが、同期と非同期の問題があり、非同期にしないと $.ajax 関数から値を返すことができないといつも言われました。

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() { 
  $(this).addClass("done");
});

上記の例では、この done 関数が適用されるもの (例では $(this) として使用されているもの) に適用されます。

もう1つ、ajax関数はグローバル変数を設定できないため、これも設定できませんか? 完了した関数から値を返すことはできませんか?

4

1 に答える 1

2

この行われた関数が適用されるもの

$.ajaxjqXHRオブジェクト(構成パラメーターの説明の後の最初のセクションを参照)を返します。これは、promiseインターフェースを実装し、コールバックを追加して、Ajax呼び出しの変更の通知を受け取ることができます。

例で$(this)として使用されているもの

のコールバック内で、オブジェクトが構成内$.ajaxで参照するか、設定されていない場合はjqXHRインスタンスを参照します。この場合、それは以下を指します:thiscontextcontextdocument.body

コンテキスト:このオブジェクトは、すべてのAjax関連のコールバックのコンテキストになります。デフォルトでは、コンテキストは、呼び出しで使用されるajax設定を表すオブジェクトです(に$.ajaxSettings渡される設定とマージされます$.ajax)。

これ以上のことはすべてドキュメントで説明されています:http://api.jquery.com/jQuery.ajax/


ajax関数はグローバル変数を設定できないため

これは正しくありません。どの関数でもグローバル変数を設定できます。非同期関数の問題は、設定される前に変数にアクセスしている可能性が高いことです。

これで設定することもできません

上記を参照

完了した関数から値を返すことはできません

(コールバック内にステートメントを配置する場合のように)値を返すことはできますが、jQueryがコールバックを内部的に呼び出し、戻り値を無視するためreturnコードに返すことはできません。

于 2012-10-13T01:30:41.070 に答える