来自Phonegap Android的AJAX请求失败

Ron*_*lev 24 android cordova

过去两天我一直在研究这个问题,并且看了很多其他的建议.是的,我可以从android模拟器和实际的Android手机上的phonegap应用程序中获得这个简单的ajax请求.

我的手机版本是(使用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);
    });
Run Code Online (Sandbox Code Playgroud)

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

错误| 在file:///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" />
Run Code Online (Sandbox Code Playgroud)

我在Config.xml中有以下内容

<param name="android-package" value="org.apache.cordova.core.NetworkManager" />
Run Code Online (Sandbox Code Playgroud)

当我检查navigator.connection.type我进入3G模拟器和wifi物理电话.

知道还有什么可能出错吗?

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

{"readyState":4,"status":404,"statusText":"error"}
Run Code Online (Sandbox Code Playgroud)

Rao*_*rge 49

您应该将域列入白名单以使AJAX调用正常工作.

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

<access origin="*" />
Run Code Online (Sandbox Code Playgroud)

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

<access origin="http://yourdomain" />
Run Code Online (Sandbox Code Playgroud)

  • 很高兴在早上4点看到这个. (12认同)

aki*_*iva 15

除白名单外,请确保cors标志为true以启用跨源资源共享.

$.support.cors=true;
Run Code Online (Sandbox Code Playgroud)

请在这里找到参考

  • akiva我爱你.做得好.单凭白名单不起作用.必须在页面加载时将其设置为true! (2认同)