Jquery 真实设备上cordova/phonegap应用程序中的Ajax请求失败
我正在构建一个Cordova 4.0 jQuery Mobile 1.4.2Android应用程序,我遇到了一个特定的AJAX调用问题。我已经寻找过类似的问题,并且已经在那里实施了解决方案,但没有成功 下面是发生的情况: 我有以下AJAX调用:Jquery 真实设备上cordova/phonegap应用程序中的Ajax请求失败,jquery,ajax,jquery-mobile,cordova,double-click,Jquery,Ajax,Jquery Mobile,Cordova,Double Click,我正在构建一个Cordova 4.0 jQuery Mobile 1.4.2Android应用程序,我遇到了一个特定的AJAX调用问题。我已经寻找过类似的问题,并且已经在那里实施了解决方案,但没有成功 下面是发生的情况: 我有以下AJAX调用: var request = $.ajax({ type: "GET" , crossDomain: true, url: 'http://pubads.g.doubleclick.net/gampad/ad
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文件中已经有)
有人能帮我找出问题所在吗?因为android Ajax请求的新内容安全策略被阻止
试试下面的方法,看看是否有效
打开config.xml文件
替换
<access origin="*" />
与
准备phonegap项目并重新构建,然后在真实设备上进行检查
问候,,
Jagat好吧,这不是我所期望的答案,但这就是我为解决这个问题所做的:创建一个全新的Cordova 4.0项目,并将另一个项目的www文件夹复制到那里。然后像往常一样在eclipse中构建和运行,一切都正常运行,而不改变项目中任何地方的一行代码
我意识到问题不在代码中,因为我注意到我在应用程序中使用的其他AJAX调用(过去工作正常)也失败了
所以我不知道这是不是Cordova4.0的错误,但在某个时候AJAX停止了工作。我发布这篇文章是为了防止有人遇到同样的问题。在我的例子中,我从cordova 3.7升级到cordova 5
以下是我解决问题的方法:添加插件cordova插件白名单结果我只是缺少以下插件:
cordova插件白名单
在我安装它之后,移除android平台,重新添加android平台,构建并运行,一切正常 服务器端出错。@HanhLe不确定,如果是这种情况,它在两种情况下都不能工作,但它可以在桌面浏览器中工作……您能告诉我们您的控制台输出吗?使用此命令可获得控制台输出:此处存在相同问题。。。生病了/这也发生在我身上。但在谷歌搜索“cordova ajax call not work”之后,我从设备和emulator上卸载了我的应用程序,擦除emulator,删除emulator并创建一个新的,当然,还要修改我的dns服务器设置,因为我从dnsmasq上的调用有点滑稽。链接到文档:和命令:cordova plugin add cordova plugin whitelist
<access origin="http://*" />
<access origin="https://*" />