0

ajaxレスポンスを変数に入れてみましたが、後で使用しますが、うまくいきません

これは私のコードです

var retourn;    

var requestData = new Request ({
    url: 'dnscheck.php',
    async:false,
    onComplete: function(response){
        //alert(response); // this work good
        retourn = response;
    }
});

alert(retourn); // shows me undefined

mootools 1.2.4 バージョン

この問題を解決する方法はありますか


履歴をクリアして何度も試した後、うまくいきましたありがとうGrim

var retourn;    

var requestData = new Request ({
    url: 'dnscheck.php',
    async:false,
    onComplete: function(response){
        //alert(response); // this work good
        retourn = response;
    }
});

requestData.send();
alert(retourn); // work fine
4

1 に答える 1

1

ajax呼び出しは非同期であるため、onCompleteハンドラーのコードは呼び出しが返されたときにのみ実行され、代わりに最終アラートはリクエストを作成するコードの直後に実行されます(送信メソッドを呼び出して開始する必要があります) ) - この時点で、変数は常に初期化されていません。

編集: aync: false を使用していることに気づきませんでした (これは通常悪い考えです...) - それでもリクエストを送信する必要があります

requestData.send();

編集 (2):また、onComplete コールバックを使用しないことをお勧めします (実際に返されたものを確認する前であっても、応答が返されたときに呼び出されます) - 代わりに onSuccess コールバックを使用し、応答が失敗する可能性があるため、onFailure コールバックも定義して、そこで何かを実行することをお勧めします。

    var retourn;    

    var requestData = new Request ({
        url: 'yoururl.php',
        async:false,
        onSuccess: function(response){
            retourn = response;
        },
        onFailure: function(xhr) {
            retourn = "failed";
        }
    });

    requestData.send();

            alert(retourn);
于 2013-02-14T12:20:09.310 に答える