2011-02-16 35 views
2

我正在使用手機開發Android應用程序。一切工作正常請求/響應,現在我必須處理的情況下,當沒有3G網絡可用和wifi被禁用,在這種情況下,我的jquery ajax()請求不會做任何事情,它甚至不會來錯誤處理程序。我已經放了10秒的超時時間。當在Android上禁用網絡和WiFi時處理ajax請求

有人能告訴我ajax請求出了什麼問題嗎?爲什麼錯誤處理程序沒有調用?

感謝

+0

如果您等待很長時間(> 120秒)錯誤處理程序被調用? – 2011-02-16 09:11:03

+0

沒有任何反應,超時值不管它是0還是120或更高。 – Bhupi 2011-02-16 09:19:51

回答

2

使用PhoneGap的Network API來測試設備上網絡連接的當前狀態。下面是從上面鏈接的文檔頁面中獲取的示例:

function reachableCallback(reachability) { 
    // There is no consistency on the format of reachability 
    var networkState = reachability.code || reachability; 

    var states = {}; 
    states[NetworkStatus.NOT_REACHABLE]      = 'No network connection'; 
    states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection'; 
    states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK]   = 'WiFi connection'; 

    alert('Connection type: ' + states[networkState]); 
} 

navigator.network.isReachable('phonegap.com', reachableCallback); 

希望幫助!

3

你總是可以做一個測試事前,調用$(document).ready()之前,並設置一個變量設置爲false:

var is_online = false; 

if (navigator.onLine(connected)) { 
    is_online = true; 
} 

然後你就可以測試你的$.ajax()請求變量。

檢查此Stack Overflow question

+1

這是一個很好的答案,但根據我的經驗,navigator.onLine屬性在加載頁面後不會更新。因此,如果用戶的連接在加載應用程序後發生變化,您可能不知道。 – 2011-02-16 19:37:52