Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jQuery, Ajax


Автор: DimaSiK 3.12.2008, 15:18
Возможно ли сделать AJAX запрос к сайту , который находится вне домена на котором работает сам скрипт? Пробую вот такую конструкцию
Код

$.post("http://ya.ru", function(data){
              alert("Data Loaded: " + data);
            });

но получаею ошибку связанную с политиками безопасности.

Автор: Greendrake 3.12.2008, 23:50
С другого домена можно грузить только яваскриптовый контент (ставим параметр dataType='script').
Ну или ещё вариант — использовать на своём домене сервис-прокси.

Автор: DimaSiK 4.12.2008, 11:37
Проблемма в следующем. Пишу offline версию части большого web-приложения, использую GoogleGears. Написал одну страниц, для пробы,, которая работает на SQLite + JQuery + JavaScript + GoogleGears. Использовать класс GoogleGears для посылки AJAX запросов не хочется, уж очень он простенький, поэтому юзаю JQuery. Стоит последняя задача, отправка локальных данных на сервер, отпарвака AJAX-ом в фоне. Вот тут и возникла проблемма отправки на другой домен. Так как JQuery ждет, что я буду делать все в локальном пространстве и офигевает, когда я заставляю его обратиться к удаленному сайту smile.  Вообщем, возможно ли решить данную проблемму? 

Автор: DimaSiK 4.12.2008, 16:27
Цитата(Greendrake @ 3.12.2008,  23:50)
С другого домена можно грузить только яваскриптовый контент (ставим параметр dataType='script').
Ну или ещё вариант — использовать на своём домене сервис-прокси.

Необязательно, достаточно использовать  $.getJSON. Конструкция позволяет обращаться куда угодно. Возникла дркугая роблема. Использю следующее:
Код

$.getJSON("some.url/?callback=?",
        function(json){
            isOnline = json.isConnected;
            
            if(isOnline) {
               $('#status')[0].value = 'STATUS: ONLINE';
               $('#status').removeAttr('disabled').removeClass('disabled');
               $('#upload').removeAttr('disabled').removeClass('disabled');
            } else {
               $('#status')[0].value = 'STATUS: OFFLINE';
               $('status').attr('disabled', 'disabled').addClass('disabled');
               $('upload').attr('disabled', 'disabled').addClass('disabled');
            } 
        });

Если имеется подключение - кнопки активируются, если нет - деактивируются. Когда сетевое соединение активно(подключены), все работает, если я выключаю сетевое соединение(моделирую оффлайн) то скрипт попросту не выполняет ничего и не возвращает исключений и событий. В связи с этим кнопки не деактивируются. 

Автор: Greendrake 4.12.2008, 16:54
Цитата(DimaSiK @ 4.12.2008,  16:27)
если я выключаю сетевое соединение(моделирую оффлайн) то скрипт попросту не выполняет ничего и не возвращает исключений и событий

Естественно — ведь передаваемый коллбэк вызывается только при успешном завершении обращения, а неудачи просто игнорируются.
Чтобы что-то сделать при неудачном завершении, придётся использовать оригинальный $.ajax() с error-коллбэком.

Автор: DimaSiK 4.12.2008, 18:38
Цитата(Greendrake @ 4.12.2008,  16:54)
Цитата(DimaSiK @ 4.12.2008,  16:27)
если я выключаю сетевое соединение(моделирую оффлайн) то скрипт попросту не выполняет ничего и не возвращает исключений и событий

Естественно — ведь передаваемый коллбэк вызывается только при успешном завершении обращения, а неудачи просто игнорируются.
Чтобы что-то сделать при неудачном завершении, придётся использовать оригинальный $.ajax() с error-коллбэком.

$.ajax не работает при обращении к другому домену.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)