Phonegap:ajax + jsonp 在 PC 上工作但在 Android 上不工作

Posted

技术标签:

【中文标题】Phonegap:ajax + jsonp 在 PC 上工作但在 Android 上不工作【英文标题】:Phonegap: ajax + jsonp working on PC but not in Android 【发布时间】:2013-04-02 23:20:47 【问题描述】:

使用 Cordova 2.5.0 + jQuery 1.91,我正在尝试解析远程 JSON

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
$.ajax(
        url: 'http://sub.foo.com/json.php?callback=?',
        dataType: 'jsonp',
        jsonp: 'jsoncallback',
        timeout: 5000,
        success: function(data, status)
                alert("OK");
        ,
        error: function()
                alert("Error");
        
);

在我的桌面 Chrome 浏览器上运行正常,但在我的 android 模拟器上运行不正常(“错误”消息)。

我确实在“AndroidManifest.xml”上设置了权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在“config.xml”上

<access origin="http://sub.foo.com" />

我做错了什么?非常感谢。

【问题讨论】:

没有人吗? :(我也遇到了同样的问题..你解决了吗? 我也有同样的问题 【参考方案1】:

在 res/xml/cordova.xml 文件中添加以下行

<access origin="http://127.0.0.1*"/> <!-- allow local pages -->
    <access origin="http://192.168.1.211*" subdomains="true"/>
    <access origin="http://70.38.120.153:240*" subdomains="true"/>
    <!-- <access origin="https://example.com" /> allow any secure requests to example.com -->
    <!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www -->
    <access origin=".*"/>

    <log level="DEBUG"/>
    <preference name="useBrowserHistory" value="true" />
    <preference name="exit-on-suspend" value="false" />

【讨论】:

以上是关于Phonegap:ajax + jsonp 在 PC 上工作但在 Android 上不工作的主要内容,如果未能解决你的问题,请参考以下文章

ajax 和jsonp 不是一码事

$.ajax() on phonegap

JSON和JSONP,原来ajax引用这个来实现跨域访问的

说说JSON和JSONP

说说JSON和JSONP区别

说说JSON和JSONP区别