2014-11-19 4 views
5

Я строю Cordova 4.0 jQuery Mobile 1.4.2 Android-приложение, и у меня возникают проблемы с определенным вызовом AJAX. Я искал похожие вопросы и уже реализовал решения там без успеха.Ошибка Ajax в кордове/приложении phonegap на реальном устройстве

Вот что происходит:

У меня есть следующий AJAX вызов:

var request = $.ajax({ 
     type: "GET" , 
     crossDomain: true, 
     url: 'http://pubads.g.doubleclick.net/gampad/adx?iu=/XXX/YYY&sz=300x50&c=123456789' 
    }); 

    request.done(function (response, textStatus, jqXHR){ 

     console.log(response); 
    }); 

    request.fail(function (jqXHR, textStatus, errorThrown){ 
     console.error("DFP Plugin Error: " + textStatus, errorThrown); 
    }); 

Когда я запускаю мое приложение в браузере моего компьютера, что запрос работает отлично. Тем не менее, когда я построить и отладить приложение из реального устройства, запрос не дает эту ошибку: {"readyState":0, "responseText":"", "status":0, "statusText":"error"}

Я уже включен $.support.cors = true; и $.mobile.allowCrossDomainPages = true;, и у меня уже есть <access origin="*" />) в моем файле config.xml.

Может ли кто-нибудь помочь мне разобраться, в чем проблема?

+0

Ошибка со стороны сервера. –

+0

@HanhLe не уверен, если бы это было так, это не сработало бы ни в одной ситуации, но оно работает с настольным браузером ... – Albert

+0

Можете ли вы рассказать нам о выходе своей консоли? Используйте это, чтобы получить вывод консоли: http://stackoverflow.com/a/27044611/3499115 – JBaczuk

ответ

5

Ну, это не тот ответ, который я ожидал, но это то, что я сделал, чтобы решить эту проблему: создать совершенно новый проект Cordova 4.0 и скопировать туда папку WWW от других один. Затем создайте и запустите в затмении, как обычно, и все сработало без изменения одной строки кода в любом месте проекта.

Я понял, что проблема не в коде, потому что я заметил, что другие вызовы AJAX, которые у меня были в приложении (и для работы отлично), также терпят неудачу.

Так что я не знаю, была ли это ошибка Кордовы 4.0 или что-то в этом роде, но в какой-то момент AJAX перестала работать. Я отправляю это на случай, если кто-то столкнется с тем же вопросом.

+0

такой же вопрос здесь ... больной. :/ –

+0

Это случилось со мной. Но после того, как googling «cordova ajax call not work», я удалил свое приложение с устройства и эмулятора, уничтожил эмулятор, удалил эмулятор и создал новый, и, конечно же, скрипку с настройками моего DNS-сервера, так как мой звонок от dnsmasq был любопытное смешно. –

2

Из-за новой политики безопасности контента для андроидальных запросов Ajax заблокированы.

попробуйте следовать и посмотреть, если это работает.

Откроем config.xml

Заменить

<access origin="*" /> 

С

<access origin="http://*" /> 
<access origin="https://*" /> 

подготовить проект PhoneGap и построить его снова и проверить на реальном устройстве.

С уважением, Джагата

4

В моем случае я модернизировал от Cordova 3,7 до Кордовы 5 Вот что решить это для меня: добавить плагин Cordova-плагин-белый список

+1

Ссылка на документы: https://cordova.apache.org/docs/en/5.1.1/guide_appdev_whitelist_index.md.html и команда: 'cordova plugin add cordova-plugin-whitelist' –

0

Оказывается, я просто отсутствую следующий плагин:

cordova-plugin-whitelist

После того, как я установил его, удалите платформу Android, снова добавьте платформу Android, создайте и запустите, это сработало!

Смежные вопросы