Будет ли jQuery .load() работать с PhoneGap?

Я знаю, что функция jQuery .load() имеет "проблему": вы не можете получать страницы которые находятся за пределами текущего домена из-за политики единого происхождения, но я помню, когда мне разработка другой программы, в которой я мог бы без проблем выполнять междоменный AJAX в скомпилированной среде PhoneGap, но будет ли она работать в PhoneGap (как обычный AJAX) или она просто не работает из-за политики?


person Nathan Campos    schedule 23.08.2011    source источник


Ответы (2)


Вы можете использовать .load() или $.ajax() в приложениях PhoneGap. Большая часть моего опыта связана с получением информации из того же домена, в котором находится приложение. упакован. Например:

Приложение. идентификатор пакета:

com.мой-домен.мое-приложение

Домен сайта для ajax звонков:

www.мой-домен.com


Я только что провел простой тест в эмуляторе iPhone (через Xcode) и смог получить содержимое личного веб-домена, а также http://www.google.com/. Тест был следующим:

$(document).ready(function () {
    $.get('http://www.google.com/', function (data) {
        alert(data);
    });
});
person Jasper    schedule 23.08.2011
comment
Большое спасибо за помощь и тестирование :) - person Nathan Campos; 23.08.2011
comment
Нет проблем, ваш вопрос меня заинтересовал. Если я найду дополнительную информацию о междоменных вызовах ajax из собственных приложений, я опубликую здесь информацию/ссылки. - person Jasper; 23.08.2011
comment
Насколько я понимаю, причина отсутствия междоменных проблем с PhoneGap заключается в том, что источником JS-файла является локальная файловая система — и для этого источника не применяются дополнительные ограничения. - person NPC; 23.08.2011
comment
Я также сделал тест и понял, что это работает, но остается вопрос, почему это работает. Было бы здорово, если бы кто-нибудь объяснил. - person Tim Büthe; 06.04.2012
comment
Дополнительная информация. Политика того же источника также влияет на страницы localhost и file://. - person Tim Büthe; 06.04.2012
comment
@TimBüthe Насколько я понимаю, приложение на устройстве не имеет домена, поэтому у него нет способа проверить, находится ли запрос в другом домене. Некоторые платформы могут настроить некоторые параметры jQuery для запрета междоменного доступа, даже если он доступен: jquerymobile.com/demos/1.1.0-rc.1/docs/pages/phonegap.html - person Jasper; 06.04.2012

Я пытался сделать это, тестируя на симуляторе ipad, и у меня это не сработало, я продолжал получать междоменные ошибки ajax (т.е. ошибки разрешений).

В конце концов я обнаружил, что мне нужно перейти к [projectName] -> Файлы поддержки -> phonegap.plist В разделе «Внешние хосты» добавить новую строку со значением * Или добавить свой точный домен

(Из этой ссылки благодаря Дрору ' Ицхаков).

person fxsam    schedule 15.01.2012