在真实设备上的cordova / phonegap应用程序中Ajax请求失败

我正在构建一个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文件中已经有)

有人可以帮我弄清楚问题是什么吗?

嗯,这不是我期待的那种答案,但这就是我要解决的问题:创建一个全新的Cordova 4.0项目并从那里复制www文件夹。 然后像往常一样在eclipse中构建和运行,所有工作都在不改变项目中任何地方的单行代码

我意识到问题不在代码中,因为我注意到我在应用程序中使用的其他AJAX调用(并且曾经工作正常)也失败了。

所以我不知道这是不是一些Cordova 4.0的bug或什么的,但在某些时候AJAX停止了工作。 我发布这个以防有人遇到同样的问题。

在我的情况下,我从cordova 3.7升级到cordova 5以下是为我解决的问题:添加插件cordova-plugin-whitelist

由于针对Android Ajax请求的新内容安全策略被阻止。

尝试下面,看看是否有效。

打开config.xml

更换

  

   

准备phonegap项目并再次构建它并检查真实设备。

此致,Jagat

原来我刚刚错过了以下插件:

cordova – 插件白名单

安装完毕后,删除android平台,重新添加android平台,构建并运行,就可以了!