2012-03-19 3 views
3

Я искал решение, но не смог полностью. Следующие коды работают нормально в 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  
    } 
}); 
+0

какая платформа? это работает, если вы попробуете приложение в браузере? – ghostCoder

+0

привет там, он не работает в браузере, а также в эмуляторе. Для браузера я тестировал Firefox, IE и Chrome. Они не работают :( – yi2ng2

+0

, тогда это не проблема с телефонной записью .. сначала запустите ее в обычном браузере. Попробуйте это вместо http://www.freelancephp.net/simpleajax-small-ajax-javascript-object/ вместо этого jquery ajax – ghostCoder

ответ

3

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

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

+0

привет Мартин, да, URL-адрес доступен как из браузера, так и из эмулятора. У вас есть какая-то подсказка, почему аякс все еще не работает? – yi2ng2

+0

- это приложение, разрешающее доступ к сети/интернету в Android , вы должны включить это в манифест. –

+0

Да, я включил это. На самом деле весь фрагмент кода работает только под JQuery 1.4.4 с JQuery Mobile 1.02a, если он теперь находится в JQuery 1.7.1 с помощью JQuery Мобильный 1 .1.0, он не работал как ожидалось – yi2ng2

0

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

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

$.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  
    } 
}); 

Спасибо за все ДАННОМ помогает!

3

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

+2

Да!Спасибо за комментарий, я решил свою проблему, обновив с 1,5 до 1,7 –

1

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

. Doc url, похоже, изменился на http://jquerymobile.com/demos/1.0/docs/pages/phonegap.html, и есть также http://view.jquerymobile.com/master/demos/faq/how-configure-phonegap-cordova.php –