見出し画像

【jQuery】ajaxで取得した戻り値を使う

こんな感じで、ajax通信して取得した戻り値を、関数の外で使いたかったが使えず。ajax()はデフォルトで非同期通信をするため、レスポンスが返る前に次の処理にいくのが原因のよう。

function sample(){
    $.ajax({
        type : "GET",
        url : "getJSON",
        dataType : "json",
        cache : false,
        success: function(data, status, xhr){
            //成功時の処理
            return 処理結果;
        },
        error: function(XMLHttpRequest, status, errorThrown){
            //失敗時の処理
            console.log("fail:" + XMLHttpRequest);
	    console.log("status:" + status);
            return 処理結果;
        });
}

var result = sample(); // undefined


こんな感じで成功時と失敗時の処理を外に出してあげることで関数の外で戻り値を使えるみたい。

function sample(){
   return $.ajax({
        type : "GET",
        url : "getJSON",
        dataType : "json",
        cache : false,
   })
}

sample().done(function(data, status, xhr) {
   //成功時の処理

}).fail(function(XMLHttpRequest, status, errorThrown) {
   //失敗時の処理

});

この記事が気に入ったらサポートをしてみませんか?