2013-12-13 32 views
1

我有試圖從外部服務器獲取數據的PhoneGap的Android應用程序:的Android的PhoneGap 3 web應用程序白名單中不工作

服務器是一個.NET的WebAPI - 並使用通信電子是通過JSONP。相同的代碼/服務器在iOS中使用phonegap 2.7。對於Android,我使用phonegap 3.1。我已經加倍檢查了網址以確保它是正確的。我的config.xml文件中也有以下行。

<access origin="*" subdomains="true" /> 

請求詳情請看這裏:

Request URL:http://XXXXXXXXXXXX.com/server/api/messagetypeopt/1?callback=jQuery17209047717128414661_1386902222072&_=1386902252817 
Request Method:GET 
Status Code:404 Not Found (from cache) 
Request Headersview source 
Accept:*/* 
User-Agent:Mozilla/5.0 (Linux; Android 4.4; sdk Build/KRT16L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 
Query String Parametersview sourceview URL encoded 
callback:jQuery17209047717128414661_1386902222072 
_:1386902252817 

和JavaScript請求代碼與

$.support.cors = true; 
     $.mobile.allowCrossDomainPages = true; 
     $.mobile.loading('show'); 

     // enableFrontPageButtons(1) 
     enableButtons(0); 
     console.log('about to get message types'); 
     try { 
     $.ajax({ 
      //url: 'http://localhost:8956/api/messagetypeopt/' + SENDER_ID , 
      url: SERVER + '/api/messagetypeopt/' + SENDER_ID , 
      type: 'GET', 
      dataType: 'jsonp', 
      jsonp: 'callback', 
      crossDomain: true, 
      async: false, 
      success: function (data) { 
       //alert('1'); 
       localStorage.setItem("rawMessageTypes", JSON.stringify(data.branches)); 
       Sender.updateBranchesData(data); 
       Sender.updateSenderData(data); 
       //alert('2'); 
       setupBranches(data.branches); 
       setMessageTypesDB(data.branches); // store in local database. 
       updateMessageTypes(data.branches); 
       WriteMessageList(getMessageDataForBranch(JSON.parse(localStorage.getItem("rawMessageTypes")))); 
       //alert('3'); 
       // save sender data and branch data 
       enableButtons(1); 
       //$('#libName').val(ConfigData.SENDER_NAME); 
       changeTheBranch(CURRENT_BRANCH); 
       // alert('4'); 
       //alert('Update Complete'); 
       $('messagetypepopuptext').text('Update Complete'); 
       $('messagetypepopup').popup(); 

      }, 
      statusCode: { 
       500: function() { 
        alert("An incorrect request went to the server, check your UserID? "); 
        enableButtons(1); 
        $.mobile.changePage('#pageSetup', {changeHash: false}); 
       } , 
       400: function() { 
        alert("An incorrect request went to the server, check your UserID? "); 
        enableButtons(1); 
        $.mobile.changePage('#pageSetup', {changeHash: false}); 
       } 
      }, 
      error: function (x, y, z) { 
       //alert('There was an error getting data from the server'); 
       enableButtons(0); 
       $.mobile.changePage('#pageSetup', {changeHash: false}); 
      }, 
      complete: function (a, b) { 
       //alert('complete:' + a + '\n' + b); 
       $.mobile.loading('hide'); 
      } 
     }); 

我真的卡在這一點 - 所以我真的很喜歡一些幫助。謝謝:)

回答

2

我和你在同一頁面。它完美的iOS7甚至Android 2.3的虛擬機,但它並沒有在Android 4.0.3我使用PhoneGap的3.1

---編輯工作---

我有各種網站的白名單,我把他們都以不同的方式

<access origin="*://site.com" subdomains="true"/> 
<access origin="*://site.com/*" subdomains="true"/> 
<access origin="*://site.com/something/*" subdomains="true"/> 
<access origin="https://site.com/" subdomains="true"/> 

由於我使用AngularJS我不知道如何幫助你在你的代碼,但一旦我測試使用jQuery和我沒有你們的支持CORS代碼。我還在位於res/xml/config.xml的config.xml中添加了

<access origin="..." subdomains="true"/> 

相關問題