-1

ajaxを介してphpファイルからデータを取得しています。データに基づいて、いくつかの処理を行う必要があります。私は自分のコードにいくつかのアラートを入れました。それから、ajax がデータを取得する前に ajax の外側のコードが実行されていることがわかりました。データがphpファイルから受信された後にコードを実行したい。

コード:

$(function () {
    var originalData=""; 
    $.ajax({                                      
      url: 'data.php',                    
      data: "",                        
      dataType: 'text',               
      success: function(data)          
      {
        originalData=data;
        alert("originalData 1 "+ originalData);  
      }
    });

    alert("originalData 2 "+ originalData);  
    ...
      Processing code
    ...
});

アラートのシーケンスは次のとおりです。

最初:「オリジナルデータ2」

2番目:「オリジナルデータ1」

1つのオプションはProcessing code、関数内に含めることですが、処理後にユーザーがすぐに新しいものを取得successできるようにするため、後で(少なくとも4〜5スタックの深さ)のバッファを持つことができるようなロジックを配置したいため、それを行うことはできませんが php から取得されるのを待つのではなく、current のコードを取得します。datadatadatadata

4

2 に答える 2

1

Ajax は非同期処理モデルを使用します。サーバーへの要求が送信されると、クライアントは応答が戻ってくるのを待たずに次のステートメントを実行します。サーバーが応答すると、応答のステータスに応じて、成功または失敗のコールバックが呼び出されます。

ajax 呼び出しからのデータを使用してすべての処理を成功コールバックに入れる必要があります。

元:

$.ajax({
    ....
}).done(function(data) {
    //To all you post processing here
}).fail(function(){
    //Do your error handling here
});
于 2013-02-27T06:38:06.030 に答える
1

A ajax call doesn't stop the next line execution so you will have to do something like below:

$(function () {
var originalData=""; 
$.ajax({                                      
  url: 'data.php',                    
  data: "",                        
  dataType: 'text',               
  success: function(data)          
  {
    originalData=data;
    alert("originalData 1 "+ originalData);  
    myFunction();
  }
});

function myfunction()
{
alert("originalData 2 "+ originalData);  
...
  Processing code
...
}

});

于 2013-02-27T06:35:04.620 に答える