1. ホーム
  2. javascript

[解決済み] jQuery ajax呼び出しの成功後にデータを返す [重複]。

2022-03-20 14:09:45

質問

このようなものがあります。スクリプトを単純に呼び出して、値や文字列を返すものです。

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {
         return data; 
      }
   });
}

しかし、このようなものを呼び出すと

var output = testAjax(svar);  // output will be undefined...

この値を返すにはどうすればよいのでしょうか? 以下のコードもうまくいかないようです。

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {

      }
   });
   return data; 
}

解決方法は?

関数からデータを返すには、非同期呼び出しではなく、同期呼び出しを行うしかありませんが、それでは応答を待っている間にブラウザがフリーズしてしまいます。

結果を処理するコールバック関数を渡すことができます。

function testAjax(handleData) {
  $.ajax({
    url:"getvalue.php",  
    success:function(data) {
      handleData(data); 
    }
  });
}

このように呼び出します。

testAjax(function(output){
  // here you use the output
});
// Note: the call won't wait for the result,
// so it will continue with the code here while waiting.