簡體   English   中英

PhoneGap / Android WebView引發“未知鉻錯誤:0”

[英]PhoneGap / Android WebView throws “Unknown chromium error: 0”

我目前正在使用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 nope中。

有什么建議嗎? 感謝您的幫助!

更新2013-08-21:

經過一些研究后我得出的結論是$ .ajax不適用於PhoneGap(不知道為什么,也許是一個bug?)。 我們必須使用$ .get,但是當我用$ .get做請求時,我得到了Unknown chromium error: -6我也在這里讀到問題是由於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-08-22:

即使加載外部圖像它也不起作用:

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

同樣的錯誤。

在android清單文件中我已經設置了權限:

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

我真的不知道問題出在哪里......

更新2013-08-27:我在PhoneGap for iPhone(在iPhone模擬器中)嘗試了相同的代碼,當我使用外部網站時,ajax請求是成功的。 在android上使用外部網站也沒有得到相同的結果。 同樣的錯誤。

誰能明白為什么? 訪問來源設置得很好......

更新2013-08-27(1小時后)

問題已解決

實際上,PhoneGap不允許對IP地址進行ajax請求,它只允許請求列入白名單(在config.xml中)。 我使用生產服務器(帶域)進行測試並且工作正常。

無論如何,謝謝你們。 我希望這可以提供幫助

為了澄清這種情況,萬一有人偶然發現它,$ .ajax確實可以與PhoneGap / Cordova一起使用 - 但是當你發現..域名必須列入白名單。

從Cordova 4及更高版本開始,config.xml中只有<access origin="*" />不起作用。 您需要使用cordova-plugin-whitelist。

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

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

請注意,一般來說,使用“*”als通配符並不是一個好習慣。 而是專門定義協議和地址。

有關如何使用cordova-plugin-whitelist的更多信息,請訪問https://github.com/apache/cordova-plugin-whitelist

嘗試禁用緩存

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

此錯誤消息實際上是空的。 這主要意味着您的應用無法在文件系統上找到資源。 因此,請嘗試禁用緩存,因此它始終會從服務器加載資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM