2012-01-20 13 views
3

jQuery.ajax()でデータを取得したい場合は、このデータを成功のために保存してから使用します。 関数の順序は次のとおりです。jQuery.ajax()が成功する前に呼び出されるその他の関数

$.ajax({ 
     url: this.html_url, 
     cache: false, 
     success: function(data){ 
       //Here the data is saved via HTML5 localStorage 
     } 
    }); 

doSomething();//The stored data is used in this function. 

問題は、成功関数は、ダウンロードされたデータを保存する前にdoSomething()が呼び出されることです。したがって、データは保存される前に使用されています。誰でも助けることができますか?

答えて

1

ajaxコールがasynch作られているので、これはです。あなたのajaxコールにdefaultasync : falseを設定すると、それはtrueです。

DOCUMENTATION

$.ajax({  
    url: this.html_url, 
    cache: false, 
    async : false, // added this 
    success: function(data){ 
    //Here the data is saved via HTML5 localStorage 
    } 
}); 

AJAX呼び出しがasyncronousあるためだsuccess

success: function(data){ 
    //Here the data is saved via HTML5 localStorage 
    doSomething()' 
} 
1

私はあなたが意味することを理解していると仮定します。 successコールバックでdoSomething()に電話をかけてみませんか?

$.ajax({ 
    url: this.html_url, 
    cache: false, 
    success: function(data){ 
      //Here the data is saved via HTML5 localStorage 
      doSomething();//The stored data is used in this function. 
    } 
}); 
0

doSomethingを呼び出すための第二の方法。あなたのスクリプトは、続行する前に完了するのを待たずにいることを意味します(多くの場合、setTimeout()のように)。

doSomething()関数を成功のコールバックの中に含めてください。

0
$.ajax({ 
     url: this.html_url, 
     cache: false, 
     success: function(data){ 
       //Here the data is saved via HTML5 localStorage 
     }, 
     async:false, 
    }); 
    doSomething(); 
関連する問題