Подтвердить что ты не робот

Запрос AJAX с телефона Android

Я работаю над этим в течение последних двух дней и рассматриваю множество других предложений. Да, я могу получить этот простой запрос ajax для работы из приложения phonegap, как на эмуляторе Android, так и на реальном телефоне Android.

Моя телефонная версия (с помощью phonegap -v) 3.0.0-0.14.3

Используемый мной код:

var url = 'http://www.thomas-bayer.com/sqlrest/CUSTOMER';
    return $.ajax({
        type: "GET",
        url: url,
        timeout: 60 * 1000
    }).done(function (data) {
        alert('hey');
    }).fail(function (a, b, c) {
        console.log(b + '|' + c);
    });

Результат, который я получаю в журнале:

ошибка | в файле:///android_asset/www/js/index.js: 62

Я добавил настройки в AndroidManifest.xml

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

и у меня есть следующее в Config.xml

<param name="android-package" value="org.apache.cordova.core.NetworkManager" />

Когда я проверяю navigator.connection.type, я получаю 3G в эмуляторе и wifi на физическом телефоне.

Любая идея, что еще может пойти не так?

UPDATE: Если я зарегистрирую JSON в первом параметре неисправной функции, я получаю:

{"readyState":4,"status":404,"statusText":"error"}
4b9b3361

Ответ 1

Вы должны whitelist домен, чтобы ваши вызовы AJAX работали.

Добавьте эту строку в файл конфигурации -:

<access origin="*" />

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

<access origin="http://yourdomain" />

Ответ 2

дополнительно к белым спискам, убедитесь, что флаг cors верен, чтобы разрешить совместное использование ресурсов на основе Cross.

$.support.cors=true;

найдите ссылку здесь

Ответ 3

У меня был URL-адрес localhost, когда я использовал Visual Studio. Я решил, отредактировав файл VShost Applicationhost.config и создав версию протокола привязки, так что это: port: not *: port: localhost, а затем доступ через ip-адрес. Не забудьте получить все ссылки на порт.