вторник, 21 февраля 2012 г.

AJAX и jQuery. Основые моменты

Начнем с того что все функции в пакеты jQuery выполняющие запрос к удаленному серверу - сопровождают его специальным заголовком, по которому сервер может однозначно определить, конкретно какой пакет добавляет заголовок.
{X-Requested-With: 'XMLHttpRequest'}
Это как бы визитная карточка от jQuery.
Вторым и наиболее главным моментом, относящемся правда не к jQuery, а к системе безопасности браузера - это блокирование кросс-доменной передачи. Этот момент требует некоторое пояснение, а конкретно определения термина - кроссдоменность.
Запрещение кроссдоменности браузером входят в так называемую "политику одного источника" - т.е когда клиент общается только с тем доменом , с которого он загрузил контент.
Так вот пакет jQuery для случаев загрузки скриптов и JSON , отменяет запрет на кроссдоменность, и самостоятельно выполняет загрузку контента по альтернативной схеме, и тем самым предоставляет возможность атаки клиента по межсайтинговым запросам. Сейчас браузеры (а конкретно 9.0.1 ФФ) следуя рекомендациям CORS - все запросы относящиеся к межсайтингу блокируют и выставляя ошибку.
Схема выполнения запроса для получения скриптов и данных JSON достаточно проста. Для этого вместо того чтобы обратиться к браузеру, для создания канала доступа к удаленной информации - скрипт пакета создает в теле заголовка или тела HTML-документа, дополнительную строчку вида
<script src="//domain.name/my.js" />
И делается это приблизительно так.
var oScript = document.createElement("script");
oScript.src = "//domain.name/my.js";
document.body.appendChild(oScript);
** этим способом вставляются основная масса рюшечек здесь, и используется в знаменитом Я.Баре, когда делают кнопки в букмарклете. Ну о безопасности - мы говорить не будем -пускай она остается на совести разработчиков и клиентов.
И последний момент перед переходом к рассказу об функции пакета. В тексте неоднократно говорится об асинхронности процесса по технологии Аякс. Возникает резонный вопрос, а есть ли возможность процесс запроса сделать синхронным с исполнением основного скрипта.
-- Да такая возможность есть и она задается как один из параметров функции, и так же исполняется..
Ну вот и все теперь можно перейти к рассказу об функции исполнения запросов AJAX в пакете jQuery