【问题标题】:AJAX Request from Phonegap Android fails来自 Phonegap Android 的 AJAX 请求失败
【发布时间】:2013-08-15 23:29:39
【问题描述】:

过去两天我一直在研究这个问题,并查看了很多其他建议。是的,我可以让这个简单的 ajax 请求在 phonegap 应用程序中工作,无论是在 android 模拟器还是在实际的 android 手机上。

我的 phonegap 版本是(使用 phonegap -v)3.0.0-0.14.3

我使用的代码是:

var url = 'http://www.thomas-bayer.com/sqlrest/CUSTOMER';
    return $.ajax({
        type: "GET",
        url: url,
        timeout: 60 * 1000
    }).done(function (data) {
        alert('hey');
    }).fail(function (a, b, c) {
        console.log(b + '|' + c);
    });

我在日志中得到的结果只是:

错误|在文件:///android_asset/www/js/index.js:62

我将设置添加到 AndroidManifest.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" />

当我检查navigator.connection.type 时,我在模拟器上得到3G,在实体电话上得到wifi

知道还有什么问题吗?

更新: 如果我将 JSON 记录在失败函数的第一个参数中,我会得到:

{"readyState":4,"status":404,"statusText":"error"}

【问题讨论】:

  • 是否在普通浏览器或普通 WebView 中正确加载相同的页面(发出此 ajax 请求的页面)?
  • 您是否在您的网页上使用任何其他 javascript? WebView 默认禁用对 javascript 的支持。我对phonegap不是很熟悉,所以我不知道它是否通过一些配置/设置选项或其他东西将是否启用javascript的选择传递给你。但如果是这样,那么您必须确保将其设置为允许 javascript。但是,如果您的页面(或您的应用程序中的另一个页面)上有其他 javascript 并且它工作正常,那么它必须已经启用。
  • @FoamyGuy Javascript 工作正常。而且我没有使用 WebView。只是 ajax 失败了
  • 您还记得将域列入白名单吗?

标签: android cordova


【解决方案1】:

您应该 whitelist 域以使您的 AJAX 调用正常工作。

将此行添加到配置文件-:

<access origin="*" />

Phonegap 的默认策略会阻止所有网络访问,除非另有说明。上述行将禁用此安全限制。您还可以更具体地允许某些域绕过此安全功能,方法是在配置文件中包含域名,如下所示

<access origin="http://yourdomain" />

【讨论】:

  • 很高兴凌晨 4 点看到这个。
【解决方案2】:

除了白名单,确保 cors 标志为真以启用跨源资源共享。

$.support.cors=true;

请找到参考here

【讨论】:

  • 阿基瓦我爱你。好工作。白名单单独不起作用。必须在页面加载时将此设置为 true!
【解决方案3】:

我在使用 Visual Studio 时有一个 localhost url。 我通过编辑 VS 项目 Applicationhost.config 文件并制作一个版本的绑定协议来解决问题,使其 :port: 不是 *:port:localhost,然后通过 ip 地址访问。 确保获取对端口的所有引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 2016-10-19
    • 1970-01-01
    • 2017-04-02
    • 2018-11-30
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多