2016-07-21 39 views
0

我正在開發科爾多瓦混合移動應用程序。我正在調用一個API來將數據加載到我的變量中並對其進行處理。以下是問題所在。Ajax調用一開始不起作用,但之後成功調用

首先,我使用ajax調用API。 ajax調用後,我檢查jsonString是否爲空,如果是,則重新加載頁面以再次運行ajax調用。

$.ajax({ 
      url: GetConfigUrl // working URL, 
      type: 'POST', 
      data: { 
       token: '123456' 
      }, 
      cache: false, 
      datatype: 'json', 
      contenttype: "application/json",    
      success: function (data, response, xhr) { 
       debugger 
       jsonString = data.Value; 
      }, 
      error: function (data) { 
       // do nothing 
      ) 
     }); 

     if (jsonString == '') { 
      // Display popup to ask user the reload the page 
     } 

     return true; 

我在成功調用函數的地方一個調試器,但它不打,直接去檢查是否jsonString是空的,因爲它不會調用Ajax加載數據並進入裏面是空的顯示彈出窗口要求用戶重新加載頁面。

點擊頁面重新加載後,成功調用中的調試器正在被擊中並能夠檢索該值。因此,jsonString不是空的並且能夠繼續。

我檢查控制檯網絡選項卡,它顯示了以下結果: enter image description here

看來,第一次有人呼籲,但始終保持懸而未決。第二次調用是成功的,並返回正確的值。所以傳遞了jsonString檢查。

這個問題始終發生在第一個ajax調用不成功並處於未決狀態但所有後續調用都成功的時候。

那麼這裏可能會出現什麼問題?我如何確保第一個Ajax調用成功並始終返回數據?

回答

2

阿賈克斯當Ajax調用完成

$.ajax({ 
      url: GetConfigUrl // working URL, 
      type: 'POST', 
      data: { 
       token: '123456' 
      }, 
      cache: false, 
      datatype: 'json', 
      contenttype: "application/json",    
      success: function (data, response, xhr) { 
       debugger 
       jsonString = data.Value; 
       if (jsonString == '') { 
       // Display popup to ask user the reload the page 
       } 

      }, 
      error: function (data) { 
       // do nothing 
      ) 
     }); 


     return true; 
執行異步的地方你的邏輯中籤的功能爲它得到執行