jQuery ajax 成功コールバック関数の定義
jQuery ajaxを使ってサーバーからデータを取得したいのですが。
以下のように、成功コールバック関数の定義を .ajax()
ブロックの外に置きたいと思います。では、サクセスコールバックから返されたデータを使用できるようにするために、以下のように変数dataFromServer
を宣言する必要がありますか?
ほとんどの人が .ajax()
ブロックの中で成功コールバックを定義しているのを見たことがあります。そこで、サクセスコールバックを外部で定義したい場合、以下のコードは正しいでしょうか?
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
85
3
使うだけ。
success`プロパティは、関数への参照のみを必要とし、データをこの関数へのパラメータとして渡します。
このように
handleData
関数にアクセスできるのは、handleData
の宣言方法にあります。JavaScriptはコードを実行する前に関数宣言を解析しますので、実際の宣言よりも前のコードでその関数を使うことができます。 これをhoistingといいます。ただし、このように宣言された関数はカウントされません。
これらはインタプリタが渡したときにのみ利用可能です。
関数の2つの宣言方法についてはこの質問を参照。
成功ハンドラを以下のように書き換えてみてください。
ajaxメソッドのsuccessプロパティには、関数への参照しか必要ありません。
handleData関数では、3つまでのパラメータを取ることができます。
書きます。