【发布时间】:2014-06-08 09:31:35
【问题描述】:
我正在 PhoneGap (Cordova Apache) 上开发一个应用程序,它向我的服务器发出 Jquery Ajax XmlHttpRequest 跨域请求。
代码如下:
/*
* 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 上运行良好。它在带有 AVD android 4.0 的 android 模拟器上也运行良好。
在 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 请求中的数据时,它不再工作了。
也许我在清单或配置文件中缺少授权?
很遗憾,我无法在设备上进行实时调试:s
提前致谢!
nb:Windows 8.1 - PhoneGap Cordova Apache 3.4
【问题讨论】:
标签: android ajax cordova xmlhttprequest xmlhttprequest-level2