我正在构建一个 Cordova 4.0 jQuery Mobile 1.4.2 Android应用程序,我遇到了一个特定的AJAX调用问题。我已经找到了类似的问题,并且已经在那里实施了解决方案但没有成功。
以下是发生的事情:
我有以下AJAX调用:
var request = $.ajax({
type: "GET" ,
crossDomain: true,
url: 'http://pubads.g.doubleclick.net/gampad/adx?iu=/XXX/YYY&sz=300x50&c=123456789'
});
request.done(function (response, textStatus, jqXHR){
console.log(response);
});
request.fail(function (jqXHR, textStatus, errorThrown){
console.error("DFP Plugin Error: " + textStatus, errorThrown);
});
当我在计算机的浏览器中运行我的应用程序时,该请求完美无缺。但是,当我从真实设备构建和调试应用时,请求无法发出此错误:{"readyState":0, "responseText":"", "status":0, "statusText":"error"}
我已经启用了$.support.cors = true;
和$.mobile.allowCrossDomainPages = true;
,我的config.xml文件中已经有<access origin="*" />)
。
有人可以帮我弄清问题是什么吗?
答案 0 :(得分:5)
嗯,这不是我期待的答案,但这就是我要解决的问题:创建一个全新的Cordova 4.0项目并从那里复制www文件夹。然后像往常一样在eclipse中构建和运行,并且一切都在工作,而无需在项目的任何位置更改单行代码。。
我意识到问题不在代码中,因为我注意到我在应用程序中使用的其他AJAX调用(并且曾经工作正常)也失败了。
所以我不知道这是否是某些Cordova 4.0错误或其他什么,但在某些时候AJAX停止工作。如果有人遇到同样的问题,我会张贴此内容。
答案 1 :(得分:4)
在我的情况下,我从cordova 3.7升级到cordova 5 以下是为我解决的问题:添加插件cordova-plugin-whitelist
答案 2 :(得分:2)
由于针对Android Ajax请求的新内容安全策略被阻止。
尝试关注并查看是否有效。
打开config.xml
替换
<access origin="*" />
用
<access origin="http://*" />
<access origin="https://*" />
准备phonegap项目并重新构建并检查真实设备。
此致 杰格德
答案 3 :(得分:0)
原来我刚刚错过了以下插件:
科尔多瓦-插件白名单
安装完毕后,删除android平台,重新添加android平台,构建并运行,就可以了!