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
});
Это сообщение об ошибке действительно пустое. Это в основном означает, что ваше приложение не может найти ресурс в файловой системе. Поэтому попробуйте отключить кеш, чтобы он всегда загружал ресурс с сервера.