2014-04-23 58 views
0

我正在開發一個PhoneGap(Cordova Apache)的應用程序,它向我的服務器發出一個Jquery Ajax XmlHttpRequest跨域請求。PhoneGap - Ajax XmlHttpequest在模擬器上工作|桌面瀏覽器,但不是在設備上

下面是代碼:

/* 
* Create the XMLHttpRequest instance 
*/ 
function getXDomainRequest() { 
    var xdr = null; 

    if (window.XDomainRequest) { 
      xdr = new XDomainRequest(); 
    } else if (window.XMLHttpRequest) { 
      xdr = new XMLHttpRequest(); 
    } else { 
      alert("Votre navigateur ne gère pas l'AJAX cross-domain !"); 
    } 

    return xdr;   
} 


/* 
* Load the data from menu into XMLHttpRequest and call create menu 
*/ 
function sendData() { 
     var xdr = getXDomainRequest(); 

     xdr.onload = function() { 
       var dcat = $.parseJSON(xdr.responseText); 
       createMenu(menu, dcat); 
       configureMenuScript(); 
     } 

     xdr.open("GET", "http://preview.********.com/api/ApiProductList"); 
     xdr.send(); 
} 

sendData(); 

它在Firefox 28做工精細,IE 11和Chrome 34也做工精細的Android模擬器與AVD的Android 4.0。

在Manifest.xml文件,我把下列數據

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

而且在Config.xml

<param name="android-package" value="org.apache.cordova.core.NetworkManager" /> 
<access origin="*" /> 

我也允許在上面JS腳本的CORS

$.support.cors = true; 
$.mobile.allowCrossDomainPages = true; 

這應該允許跨域。


- >問題是它不起作用在我的設備上。 (Android 4.2.2)我的意思是,應用程序加載良好,但是當顯示數據超出ajax請求時,它不再起作用。

也許我缺少清單或配置文件中的授權?

可惜我不能活在設備上進行調試:■

提前感謝!

nb:Windows 8.1 - PhoneGap Cordova Apache 3.4

回答

0

我發現了我的問題。這實際上不是由於代碼錯誤,而是由於公司的防火牆。

所以,基本上,上面的代碼工作。至少這是關於如何在電話上實現XMLHttpRequest的一個很好的回顧:)

相關問題