1. ホーム
  2. javascript

[解決済み] jQuery ajax成功コールバック関数定義

2023-01-30 22:53:53

質問

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
}

どのように解決するのですか?

使用するだけです。

function getData() {
    $.ajax({
        url : 'example.com',
        type: 'GET',
        success : handleData
    })
}

success プロパティは関数への参照のみを必要とし、この関数へのパラメータとしてデータを渡します。

にアクセスすることができます。 handleData 関数にアクセスすることができます。 handleData が宣言されているからです。JavaScript はコードを実行する前に、関数宣言があるかどうかを解析するので、実際の宣言の前にあるコードで関数を使用することができます。 これは、次のように知られています。 ホスティング .

このように宣言された関数はカウントされませんが。

var myfunction = function(){}

これらはインタプリタが渡したときのみ利用可能です。

関数を宣言する2つの方法についての詳細は、この質問を参照してください。