2012-07-12 74 views
1

我想用Phonegap(版本1.9.0)和jQuery Mobile(1.1.0)創建一個Android(2.2)應用程序。具體來說,應用程序應該向現有的WCF REST服務發送GET請求,並檢索JSON數據(文件夾列表),並在選擇下拉菜單中將每個項目顯示爲一個選項。PhoneGap + Android + jQuery Mobile - 連接到服務器不成功

現在,當我使用桌面瀏覽器時,所有這些都可以正常工作。 WCF REST服務發送正確的響應,瀏覽器正確渲染頁面,並按照需要將選項放入選擇菜單中。然而,當我使用PhoneGap的使用在Android應用程序下面的代碼:

$.getJSON('http://xxx.xxx.xxx/MobileService.svc/GetFolders?callback=?', null, function (folders) {     
    $.each(folders, function(i, folder) { 
     $("#folders").append("<option value='"+folder.Id+"'>"+folder.Name+"</option>"); 
    }); 
    $("#folders").selectmenu("refresh"); 
}); 

...我得到錯誤信息,當我啓動了Android應用(上物理設備的調試):

Connection to the server was unsuccessful. ("file:///android_asset/www/index.html") 

當我註釋掉了上面的$ .getJSON代碼,應用程序加載正常,但是選擇菜單未填充。

我也注意到,顯然是因爲Phonegap使用「file://」協議,它不受「http://」協議所在的「同源策略」的影響。當我使用瀏覽器時使用JSONP,這就是爲什麼我有回調。我不認爲這應該是它失敗的原因,但我不知道。任何幫助將不勝感激!

事情我已經試過: 「*」

  • 更改訪問起源於cordova.xml

  • 添加「super.setIntegerProperty( 「loadUrlTimeoutValue」,60000) ;」該活動

+0

我試着重新啓動模擬器,錯誤消失了。 原因是當我啓動我的模擬器時,網絡已關閉,因此無法將網絡連接恢復。因此我重新啓動了模擬器。 – hriziya 2013-01-11 08:28:30

回答

1

原來在我的特別這種情況下,問題歸結爲客戶端無線網絡上的手機無法訪問REST服務託管的網絡,因此連接被阻止。

希望可以幫助別人

1

您可以嘗試在Getting Started Guide

甚至更​​好,因爲看到了你cordova.xml設置爲"*"而不是".*"

http://xxx.xxx.xxx 
+0

我只是試圖將它設置爲這兩個,不幸的是他們都不適合我。 – kwilliamson 2012-07-12 20:40:09

+0

如果您可以從手機上的本地文件獲取JSON,請嘗試。 – Calavoow 2012-07-12 21:00:39