Шаг 201.
Библиотека jQuery. Прокрутка и перемещение. Прокрутка заголовков. Получение рассылки из другого домена

    На этом шаге мы рассмотрим проблему получения рассылки из другого домена.

    В нашем примере в качестве службы рассылки новостей мы использовали локальный файл, но нам может потребоваться получить рассылку с совершенно постороннего сайта. Как мы уже видели, запросы AJAX, как правило, не могут выполняться к сайтам, отличным от того, откуда была получена просматриваемая страница. На 106 шаге мы обсуждали применение формата данных JSONP как средства преодоления этого ограничения. Однако здесь мы будем полагать, что у нас отсутствует возможность изменять исходные данные, поэтому нам требуется найти иное решение.

    Чтобы обеспечить возможность получения файла средствами AJAX, мы задействуем некоторый программный код на стороне сервера, который будет играть роль посредника для запросов, вследствие чего JavaScript будет полагать, что файл XML находится на нашем сервере, несмотря на то, что фактически он располагается в другом месте. Мы напишем короткий сценарий РНР, который будет перемещать содержимое рассылки новостей на наш сервер, и поставлять эти данные по запросу сценария jQuery. Этот сценарий РНР, который мы назовем feed.php, может вызываться точно так же, как ранее извлекался файл feed.xml:

$.get('../cgi-bin/feed.php', function(data) {
// .   .   .   .
}

    Внутри файла feed.php мы получим содержимое рассылки новостей от удаленного сайта, а затем выведем его.

<?php
  header('Content-Type: text/xml');
  print file_get_contents('http://jquery.com/blog/feed');
?>

    Обратите внимание, что здесь нам пришлось явно определить тип содержимого страницы как text/xml, чтобы библиотека jQuery смогла извлечь его и обработать, как если бы это был обычный статичный документ XML.

Рис.1. Использование файла feed.php

Полный текст этого примера можно взять здесь.


   Примечание. Некоторые поставщики услуг веб-хостинга из соображений безопасности могут запрещать использование функции file_get_contents() языка РНР для получения удаленных файлов. В таких случаях может оказаться доступным альтернативное решение, которое заключается в использовании библиотеки cURL. Дополнительную информацию об этой библиотеке можно найти по адресу: http://wiki.dreamhost.com/CURL.


   К сожалению, на момент публикации этого шага, нам не удалось запустить приведенный здесь скрипт. В тексте самого скрипта ошибок нет. Похоже, что на хостинге действительно запрещено использование функции file_get_contents() языка РНР, а библиотека cURL не установлена. Мы работаем над устранением этой проблемы.

    На следующем шаге мы рассмотрим добавление индикатора загрузки.




Предыдущий шаг Содержание Следующий шаг