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

时间:2014-11-19 21:52:06

标签: jquery ajax jquery-mobile cordova double-click

我正在构建一个 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="*" />)

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

4 个答案:

答案 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平台,构建并运行,就可以了!