-1

$.post を使用してデータを取得し、戻り値の型として保存しようとしています。ただし、常に未定義のエラーが発生します。

私が次のようなことをした場合:

function get_list(){
      $.post('php/reverse.php', function(data){
        alert(data);
      });
  }

すべてが完璧に機能します。しかし、私が次のようなことをすると

 function get_list(){
          $.post('php/reverse.php', function(data){
            return data;
          });
      }

alert(get_list()); 

その後、突然未定義のエラーが発生します。誰かが私が間違っていることを教えてもらえますか?

4

4 に答える 4

4

そのようなデータを非同期コンテキストで返すことはできません...

成功時に実行されるコールバックを渡す必要があります。

function get_image_list(handler){
     $.post('php/reverse.php', function(data){
         handler(data);
     });
}

get_image_list(function(data){alert(data);}); 
于 2013-04-11T21:15:07.187 に答える
1

get_image_list には return-statement が含まれていないため、実際には何も返されません。AJAX 呼び出しは非同期で実行されます。スニペットが期待どおりに機能するには、次のようにする必要があります。

function get_image_list(callback) {
    $.post('php/reverse.php', function(data){
        callback(data);
    });
}

get_image_list(function(data) { alert(data); }); 
于 2013-04-11T21:18:54.717 に答える
0

これはasynchronous、AJAX の性質によるものです。AJAX 呼び出しがコールバックを起動するまでに、他のすべてのコードが長時間実行されているため、コールバック関数から値を返すことはできません。

于 2013-04-11T21:15:45.770 に答える