2012-08-10 46 views
3

我正在phonegap/cordova 1.7.0上工作。我正在向服務器發送ajax請求。 我需要設置一個超時以便模擬它我已經在服務器端包含一個睡眠(30),並且在客戶端我的js的時間超出了30000.Phonegap 1.7.0 ajax超時不工作

經過測試,我斷定Android完全忽略檢查超時,iOS不能完成ajax調用,但不會給出任何錯誤。

有人可以幫助我嗎?是否ajax超時在phonegap下不起作用,是否有另一種方法來檢查phonegap超時? 這裏是js代碼:

$.ajax({ 
     url: url, 
     data: data, 
     type: 'GET', 
     dataType: data_type, 
     timeout:3000, 

     error: function(xhr, status, error){ 
      $('body').trigger('network-error') // triggers standard network error 
       console.log('network-error') 
       console.log('request came back with the error '+error) 
       CallbackFail() 
     }, 
     success: function(data){ 
      // is called from aSuccessCallback in the return 
      console.log('success') 
      console.log(data) 

     } 
    }) 

編輯

我忘了提一大點,我並沒有直接使用jQuery而是仄。

+0

好問題,我對這個問題也感興趣。 – 2012-08-10 15:01:40

回答

2

首先,讓自己變得簡單。安裝weinre http://people.apache.org/~pmuellr/weinre/,這將幫助您實時跟蹤ajax請求;所以你可以看到來自服務器的確切的http響應(如果有的話)。基本上它具有與谷歌開發人員工具相同的界面。你會去「網絡」選項卡來跟蹤你的Ajax請求。

在一般情況下,有幾個重要的注意事項,讓AJAX調用時需要考慮:

  1. 確保服務器,您要發送您的AJAX請求,被列入白名單,否則您將無法向它發送任何ajax請求。 (以下是如何操作:http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html

  2. 如果您通過https發送ajax請求,請確保您的服務器具有有效的證書;否則它將無法工作,除非您手動忽略手機中的無效證書。 iOS/android需要不同的步驟 - 如果是這種情況,我可以將您指向正確的stackoverflow鏈接。

最後,只是想讓你知道我在我的phonegap項目中發送ajax請求沒有任何問題。超時正在按預期工作。

+0

1.我確信服務器已被列入白名單 2.我也確定它是註釋https 你使用什麼庫在phonegap上使用ajax? 也許問題來自那裏,謝謝你的答案...... – AKFourSeven 2012-08-16 16:27:25

+0

我也在使用jquery。你是否能夠讓你的Ajax請求工作?也可能是你的ajax錯誤回調中有一個javascript錯誤,這會使回調看起來不正常。這是weinre進入調試非常方便的地方! – Aki 2012-08-16 16:45:52

+0

我使用的zepto庫是一個輕量級jquery兼容的js庫。看起來超時已經成爲該圖書館的一個問題...... – AKFourSeven 2012-08-17 07:23:22