Запрос Cordova $.ajax не будет работать

У меня проблема с запросом Cordova ajax.

  $.ajax({
    url: syncURL,
    data: (changed ? {start: changed + 1} : ''),
    dataType: "json",
    success: function (data) {
      console.log('Ajax success');
      callback(data);
    },
    error: function(model, response) {
      console.log('Ajax error');
      //app.notify(response.responseText, 'error');
      callback(null);
    }
  });

Программа показывает успех Ajax в журнале консоли. Я могу видеть содержимое внутри приложения, просматривая его в браузере с помощью:

cordova serve

К сожалению, если я хочу развернуть на симуляторе iOS или на устройстве Android, приложение не загрузит контент и получит пустой json без данных.

Что я делаю неправильно. Симулятор или устройство Android получили сетевое подключение. Я тоже ничего не вижу в журнале. Также добавлено

cordova plugins add cordova-plugin-whitelist

кордова версия 7.1.0


person anduplats    schedule 21.11.2017    source источник
comment
Вы пытались развернуть его на своем телефоне с сетевым подключением? Попробуйте указать ‹access origin=* /› в config.xml, это позволит запрашивать любой сайт. Если вы хотите ограничить его одним сайтом, укажите название сайта вместо *. Надеюсь, это работает   -  person AB D CHAMP    schedule 21.11.2017


Ответы (2)


Я столкнулся с той же ошибкой, начиная с шаблона phonegap-vue-f7 и используя axios в качестве библиотеки Ajax.

Для того же запроса к http://my.domain.com/api/request :

  • возвращает код 200 с локальным cordova serve (npm start с шаблоном phonegap-vue-f7)
  • возвращает код 404 при развертывании на реальном устройстве

шаблон phonegap-vue-f7 содержит предварительно заполненный config.xml это:

<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />

в этот момент мне пришлось установить cordova-plugin-whitelist, чтобы он заработал.

Таким образом, правильно настроенный cordova-plugin-whitelist plugin кажется правильным ответом.

person mickro    schedule 03.07.2018

не уверен, но может быть значение data: неверно

data: (changed ? {start: changed + 1} : '')

Что, если вы измените на:

data: (changed ? '{start: changed + 1}' : '')
person Giovanni Candotti    schedule 11.12.2017