【问题标题】:PhoneGap / Android WebView throws "Unknown chromium error: 0"PhoneGap / Android WebView 抛出“未知铬错误:0”
【发布时间】:2015-11-27 18:18:27
【问题描述】:

我目前正在使用 PhoneGap 开发一个项目,我需要向我的本地网络服务器发出 ajax 请求,该服务器已经:

PHP 代码

header('Access-Control-Allow-Origin: *');  

无论如何,当我在 Android 上使用 jQuery 执行 ajax 请求时,我收到此错误(在 adb logcat 中):

D/chromium(23078): Unknown chromium error: 0

Javascript 代码是:

$.ajax({url:"http://192.168.1.219/works/privati/folder/api.php/getlastmaginfo",dataType:"json",success:function(data)
{
    console.log("Finished loading by ajax");
    console.log(data);
}});

在 Ripple Emulator 中按预期工作,在 Android 中不行。

有什么建议吗?感谢您的帮助!

2013 年 8 月 21 日更新:

经过一些研究,我得出的结论是 $.ajax 不能与 PhoneGap 一起使用(不知道为什么,也许是一个错误?)。 我们必须改用 $.get,但是当我用 $.get 发出请求时,我得到Unknown chromium error: -6 我还阅读了here,该问题是由于 Android 的 WebView URL 机制存在错误。

我会继续研究,直到找到一个好的可行的解决方案

更新 2013-08-21 (2): 甚至没有使用这个作品......

var fileTransfer = new FileTransfer();

fileTransfer.download(
    "http://192.168.1.219/works/privati/qlipmag/api.php/getlastmaginfo",
    "json.json",
    function(entry) {
        console.log("OKAY");

    },
    function(error) {
        console.log(error);
    }
);

错误在new FileTransfer(); => Uncaught ReferenceError: FileTransfer is not defined

2013 年 8 月 22 日更新:

即使加载外部图像也不起作用:

<img src="http://externalhost.com/image.jpg"/>

同样的错误。

在 android manifest 文件中我已经设置了权限:

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

我真的不知道问题出在哪里......

2013 年 8 月 27 日更新: 我在 iPhone 的 PhoneGap 上尝试了相同的代码(在 iPhone 模拟器中),当我使用外部网站时,ajax 请求成功。在 android 上使用外部网站也不会得到相同的结果。 同样的错误。

任何人都可以看到为什么?访问源设置得很好...

【问题讨论】:

  • 这里有同样的问题......但我正在使用主干并在集合中获取数据设置“url”。
  • 竖起大拇指哥们,有条不紊的研究和文档令人印象深刻,而且你刚刚解决了我的问题,做得很好。
  • 太棒了 - 非常感谢..
  • 这就是你应该阅读文档的原因:)
  • 确保“回答”您的问题,并将其标记为解决方案。

标签: javascript ajax cordova chromium


【解决方案1】:

2013 年 8 月 27 日更新(1 小时后)

问题已解决

实际上PhoneGap 不允许对IP 地址的ajax 请求,它只允许对白名单(在config.xml 中)域的请求。 我使用生产服务器(带域)进行测试,它工作正常。

无论如何,谢谢你们。我希望这可以帮助

【讨论】:

  • 嗨,我有两个应用程序版本,完全相同,一个工作另一个抛出此错误。唯一的区别 phonegap 版本:可能这个 IP 地址限制是在 phonegap 3.1.0 之后修复的
  • @Denys Vitali 我也面临同样的问题,我可以在域名中添加IP地址吗?
【解决方案2】:

为了澄清这一点,以防有人像我一样偶然发现它,$.ajax 确实可以与 PhoneGap/Cordova 一起使用 - 但正如您发现的那样......该域必须被列入白名单。

【讨论】:

    【解决方案3】:

    从 Cordova 4 及更高版本开始,config.xml 中只有 &lt;access origin="*" /&gt; 不起作用。您需要使用cordova-plugin-whitelist。

    安装插件后,您可以使用 config.xml 中的以下代码来完成相同的操作:

    <allow-navigation href="*" />
    <allow-intent href="*" />
    

    请注意,一般来说,使用“*”als 通配符不是一个好习惯。而是专门定义协议和地址。

    有关如何使用cordova-plugin-whitelist的更多信息,请访问https://github.com/apache/cordova-plugin-whitelist

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 是的,你是对的......对不起,这里很新。我已经更新了答案。
    【解决方案4】:

    尝试禁用缓存

    $.ajax({
        cache: false,
        //your code
    });
    

    这个错误信息真的很空洞。这主要意味着您的应用程序无法在文件系统上找到资源。因此,请尝试禁用缓存,以便它始终从服务器加载资源。

    【讨论】:

    • 没什么,不是缓存问题,同样的错误:D/chromium( 3228): Unknown chromium error: 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2017-07-13
    相关资源
    最近更新 更多