PhoneGap/Android WebView выбрасывает "Неизвестная ошибка хрома: 0"

В настоящее время я разрабатываю проект с использованием PhoneGap, и мне нужно сделать запрос ajax на мой локальный веб-сервер, который уже:

PHP-код

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

В любом случае, когда я делаю запрос ajax с jQuery на Android, я получаю эту ошибку (в 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 (не знаю, почему, может быть, ошибка?). Мы должны использовать $.get вместо этого, но когда я делаю запрос с $.get, я получаю Unknown chromium error: -6 Я также прочитал здесь, что проблема связана с ошибкой Android с механизмом URL WebView.

Я продолжу свое исследование, пока не найду хорошее и эффективное решение

ОБНОВЛЕНИЕ 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 для iPhone (в iPhone Emulator), и запрос ajax был успешным, когда я использовал внешний веб-сайт. Использование внешнего веб-сайта также для Android не дает того же результата. Такая же ошибка.

Кто-нибудь может понять почему? Доступ к источнику настроен отлично...

Ответы

Ответ 1

ОБНОВЛЕНИЕ 2013-08-27 (через 1 час)

ВЫДАЕТСЯ ВОПРОС

Фактически PhoneGap не разрешает аякс-запрос на IP-адреса, он разрешает только запросы в белые списки (в config.xml). Я использовал производственный сервер (с доменом) для тестирования, и он работал.

Спасибо, ребята. Надеюсь, это поможет

Ответ 2

Чтобы прояснить это, если кто-то наткнется на него, как и я, $.ajax действительно работает с PhoneGap/Cordova, но, как вы обнаружили, домен должен быть включен в белый список.

Ответ 3

По сравнению с Cordova 4 и выше, имеющим только <access origin="*" /> в файле config.xml, не работает. Вам нужно использовать кордовую плагин-белый список.

После установки плагина вы можете использовать следующий код в файле config.xml, чтобы выполнить то же самое:

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

Обратите внимание, что в общем случае не рекомендуется использовать "*" als. Скорее определите протоколы и адреса.

Для получения дополнительной информации о том, как использовать Cordova-плагин-белый список, пожалуйста, посетите https://github.com/apache/cordova-plugin-whitelist

Ответ 4

Попробуйте отключить кеш

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

Это сообщение об ошибке действительно пустое. Это в основном означает, что ваше приложение не может найти ресурс в файловой системе. Поэтому попробуйте отключить кеш, чтобы он всегда загружал ресурс с сервера.