2013-10-12 7 views
1

Я пытался бороться с этой проблемой весь день и искал по всему миру. Может быть, я просто не могу найти, что одну страницу с решением ... но я посмотрел на проблемы и решения, такие как:PhoneGap не выдает запрос AJAX (jsonp)

Ajax call on phonegap not sending request

JQuery mobile + Phonegap : Ajax calls not working on Android Emulator

и ни решений там похоже, решила мою проблему.

Все, что я хочу сделать, это вызов AJAX на мой удаленный сервер, загрузка нескольких параметров и загрузка некоторого контента. Этот скрипт отлично работает в браузере, но в зависимости от незначительных изменений в файле в Phonegap либо отбрасывает ошибку «тайм-аут», либо просто говорит «ошибка». Код выглядит следующим образом (конечная точка AJAX является DEV конечной точки, и я оставлю это так, вы можете попробовать поразить его, а):

<html> 
<head> 
<script type="text/javascript" charset="utf-8" src="jquery-1.10.2.min.js"></script> 
</head> 

<body> 
<ul> 
<div id="app-status-ul"> 
<li>Loaded</li> 
</div> 
</ul> 
</body> 
<script> 
var serverRegHit = function(data, httpStat){ 
    $("#app-status-ul").append('<li>Server Reg OK, HTTP status: '+httpStat+'</li>'); 
    $("#app-status-ul").append('<li>Data Status: '+JSON.stringify(data)+'</li>'); 
}; 
var serverRegFail = function(data, httpStat){ 
    $("#app-status-ul").append('<li>Server Reg FAIL, HTTP status: '+httpStat+'</li>'); 
    $("#app-status-ul").append('<li>Data Status: '+JSON.stringify(data)+'</li>'); 
}; 
     $.ajax({url:"http://keb.bz/gcm/?deviceid=12345", 
       jsonp: 'callback', 
       dataType: 'jsonp', 
       timeout: 25000, 
       success: serverRegHit, 
       error: serverRegFail}); 

</script> 
</html> 

Я попытался с помощью Cordova 2.9, и понижен до 2,5, но это, похоже, тоже не помогло.

У моего config.xml есть белый список. * И домен keb.bz, разрешения дают приложению доступ к интернету в манифесте - и я предполагаю, что это работает, потому что он может успешно получить идентификатор устройства GCM.

Я попытался использовать JSON, JSONp, TEXT и различные типы данных через AJAX, но ни один из них не имеет никакого значения.

Есть ли другой конфигурационный пункт в Кордове/PhoneGap, который мне не хватает?

Любая помощь здесь будет оценена.

+0

Любое исключение/ошибка в консоли LogCat? Вы уверены, что библиотека jQuery успешно загружена? Сначала вы должны убедиться, что работает чистый JavaScript, а затем попытайтесь проверить, поддерживает ли jQuery. – xiaowl

+0

JQuery загружается отлично, потому что он успешно печатает ошибку в DOM и не замечает ничего исключительного в журнале cat. – Kaiesh

+0

Убедитесь, что ваше приложение имеет разрешение «Доступ к сети». – xiaowl

ответ

3

Благодаря @xioawl за то, что я дважды проверил свой manifest.xml. Оказывается, я не правильно настроил разрешения там.

В конце концов, я завелся с помощью Кордовы 2.5, 1.10, Jquery (не использовать JQuery Mobile), устанавливая мой Рез/config.xml со следующими путями доступа:

<access origin="http://127.0.0.1*" /> 
<access origin="http://keb.bz" subdomains="true" /> 
<access origin=".*" /> <!-- only during development --> 

Размещением этого фрагмента после включая все библиотеки JavaScript:

<script> 
$(document).bind("mobileinit", function(){ 
    $.mobile.allowCrossDomainPages = true; 
}); 
</script> 

И используя следующие разрешения manifest.xml:

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

Моего JSONP запрос продолжает выглядеть следующим образом:

$.ajax({url:"http://keb.bz/gcm/?deviceid=12345", 
     jsonp: 'callback', 
     dataType: 'jsonp', 
     timeout: 25000, 
     success: serverRegHit, 
     error: serverRegFail}); 

Надеется, что это полезно для кого-то!

1

сегодня у меня была подобная ошибка, когда я обновил мое приложение с помощью онлайн PhoneGap компилятор ...

я последний выполнил приложение в апреле 2015. Тогда не сделал несколько tweeks сегодня, ничего серьезного, выполнили его, и весь мой запрос ajax упал. Я сделал и предупредил строки ошибок, и все это сказало «тайм-аут».

Затем я указал телефонную версию на 3.7.0 и снова скомпилировал ... все мои ajax снова работают. Не уверен, что изменились CLI5.1 и 5.2, но он убил мое приложение.

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

+0

Прошли ли вы на это? Я «решил» его, используя перекресток и понижающий хром до версии 42x. Я не чувствую себя хорошо с этим – msander

+0

@msander ... нет, к сожалению, нет. – Shaakir

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