JQuery Mobile + Phonegap: $ .ajax звонки не работают - PullRequest
3 голосов
/ 19 марта 2012

Я искал решение, но все время терпел неудачу.Следующие коды работают нормально под JQuery 1.4.4, JQuery Mobile 1.0a2 и PhoneGap 0.9.Тем не менее, когда я перенес его в JQuery 1.7.1, JQuery Mobile 1.1.0 и PhoneGap 1.5;это продолжает падать под ошибкой.Я отслеживал http-вызов через Fiddler и понял, что ajax действительно вызывает URL-адрес, но почему он попадает под ошибку вместо успеха?Пожалуйста, помогите!

$.ajax({
type: "GET",
cache: false,
url: updateServer+'update.xml',
dataType: "xml",
error: function(xhr, settings, exception){
    alert('The update server could not be contacted.');
},
success: function(xml){
    // success code     
    }
});

Ответы [ 4 ]

3 голосов
/ 26 марта 2012

У меня была эта проблема с PhoneGap 1.5.Переход на Phonegap 1.4.1 решил проблему.Я был разочарован целыми днями и не мог разобраться в этом вопросе.

3 голосов
/ 19 марта 2012

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

Для этого из эмулятора откройте браузер по умолчанию и введите URL-адрес.он не должен давать вам 404 или какое-либо исключение.

1 голос
/ 21 января 2013

jQuery Mobile имеет целую страницу в документации о реализации с PhoneGap. Проверьте это здесь.

http://jquerymobile.com/test/docs/pages/phonegap.html

Вы должны установить разрешения для разрешения междоменных вызовов ajax.

Также! Не забудьте изменить свой код в HTML-файлах, если вы переноситесь из веб-приложения. Скорее всего, вы звонили по URL "../api/handler.php" или что-то в этом роде. Вы должны сделать все эти звонки абсолютными для использования в PhoneGap. «http://mydomain.com/api/handler.php"

0 голосов
/ 21 марта 2012

Хорошо, я полагаю, что проблема заключается в самом URL. URL-адрес действителен, так как он доступен, но он не принадлежит одному домену. Например, мой html-файл с JQuery находится в http://www.yahoo.com/index.html, но URL, который я пытаюсь вызвать, это http://www.google.com.

Браузер предотвращает вызов ajax со страницы, размещенной в одном домене, на страницу, размещенную в другом домене (такая же политика происхождения), из-за проблем безопасности. Мое решение здесь состоит в том, чтобы использовать php-файл для извлечения соответствующих данных из другого домена, в то время как html (с JQuery) вызывает php-файл следующим образом:

</p> <pre><code>$.ajax({ type: "GET", cache: false, url: 'getcontent.xml', dataType: "xml", error: function(xhr, settings, exception){ alert('The update server could not be contacted.'); }, success: function(xml){ // success code } });

Спасибо за предоставленную помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...