AJAX Fallback Вариант 2 ~ Отправка Запрос Использование Cookie

Вы можете передавать данные на сервере с использованием cookies, но любой осуществления их использования будут сильно ограничены. Cookies имеют максимальный размер 4k, и каждого домена может установить только 20 из них, что означает, что каждый запрос будет размера ограничены. Cookie основе AJAX является наиболее полезным, когда сайт разработан для него, поскольку его ограничения сделать его трудно использовать в качестве запасного. Основная функциональность обеспечивается путем установления cookie, загрузка изображения, а затем на избирательных интервалом в ожидании ответа появляться. Реализация проста; Делать что-то помимо боевого дежурства содержание результата, вы только установить собственный onComplete случае обработчик. В качестве примера, когда сервер возвращает вклад и сколько раз ему было предложено показано в следующие 2 записи. Например, в JavaScript показано в Листинг 1 и PHP код, который считывает cookie, а затем устанавливает ответ показано в Листинг 2.

Листинг 1 - Cookie - Powered AJAX

1 <html>
2 <head>
3 <title> Cookie испытаний </ название>
4
5 <script type="text/javascript">
6 функция CookieRequest () ()
7 CookieRequest.prototype = (
8 интервал: 500,
9 попыток: 5,
10 attemptCounter: 0,
11 звонка: функция (адреса, полезная нагрузка) (
12 var г = новые Дата ();
13 var = я новый Image ();
14 this.setCookie ( "КР", аппаратура);
15 i.src = сайта + '? у = '+ d.getTime ();
16 var = это самоуправления;
17 this.timerId = setTimeout (функция ()
18 (self.read ();) , this.interval);
19),
20 следующего содержания: функция () (
21 this.attemptCounter + +;
22 / / проверка данных
23 var данных = this.getCookie ( "КР");
24, если (данные! = ложным) (
25 this.attemptCounter = 0;
26 this.onComplete (данных);
27 возвращении верно;
28)
29
30 / / проверка на ошибку
31, если (this.attemptCounter> this.attempts) (
32 this.onError ();
33) еще (
34 var = это самоуправления;
35 this.timerId = setTimeout (функция () (self.read ();) ,
36 this.interval);
37)
38),
39 onComplete: функция (результат) (
40 оповещение (результат)
41),
42 onError: функция () (
43 оповещения ( "Запрос" Тайм-аут ");
44),
45 setCookie: функция (наименование, стоимость, истекает) (
46 document.cookie = имя + "=" + побега (стоимость) +
47 ((истекает)? "; истекает = "+
48 expires.toGMTString (): "");
49),
50 getCookie: функция (имя) (
51 var docCookie = document.cookie.split ( ";") ;
52 в (я var = 0; я <docCookie.length; я + +) (
53 var кусок = docCookie [я]. разделить ("=");
54, если (фрагмент [0] == имя) (
55 возвращении unescape (Строка (фрагмент [1]).
заменить (/ \ + / г ","));
56)
57)
58 возвращении ложным;
59)
60)
61 функция проверки () (
62 var cr = новый CookieRequest ();
63 cr.call ( "cookie.php ',' Некоторые Пример данных");
64)
65 </ сценарий>
66 </ Руководитель>
67 <body>
68 <a href='javascript:test()'> испытаний </ один>
69 </ тела>
  

В Листинг 1, то cookie энергии AJAX функциональность завернуты внутри JavaScript класса CookieRequest. Просьбы к серверу производятся с призывом метода (строки 11-19). Призыв метод принимает URL, к которому следует направить запрос. Она также принимает полезной нагрузки (содержания мы хотим направить на сервере), которая направила запрос в cookie. Этот метод затем используется setCookie способ установить cookie с именем CR (строка 14); Затем она создает новый объект Image и определяет ее src для запрашиваемого URL (строка 15). Этот метод отделки, начиная таймер, который запускает метод читать все 500 миллисекунд.

В образом метода (строки 2038) проверяет наличие КР cookie (строки 2324). Если она существует, то данные в нем перешел на onComplete метод (строка 26). Если данных нет, мы проверяем на наличие ошибок; Это делается путем сравнения количества проверок мы завершили против Макс проверки установить в попытках имущества (строка 31). Если есть ошибка, то onError метод называется (32). Если нет ошибки есть, мы начинаем еще один таймер сделать следующей проверки (строки 34-35).

Строки 39-44 содержат методы, которые вы переопределить при использовании класса. В onComplete метод называется, когда данные успешно загружен. Это эквивалент вызова собственности в HttpClient класса. В onError метод называется если просьба не была успешно завершена; Конечно, можно оставить этот как сигнал, но в большинстве случаев, надо обеспечить более понятной ошибке пользователям или даже повторить запрос .

В CookieRequest класса содержит также вспомогательные методы борьбы с получение и установку cookies. setCookie (строки 45-49) работ по установлению стоимости document.cookie к urlencoded строка в формате cookie имя = значение. getCookie (строки 50-59) работает путем разделения document.cookie в одной части за каждый cookie (cookies в разделенных ";") , а затем в течение этих циклов частей ищет cookie с указанным именем. Если удавалось найти имя, значение возвращается; Иначе, ложные возвращается.

В PHP страницу, которая используется в Распечатка 1 показано в Listing2. Он используется в качестве URL в слово метод и процессов полезной нагрузки, что устанавливается; Затем она определяет ответ для чтения захватить.

Листинг 2 - PHP Server Page Обработка на один Cookie AJAX Запрос

1 <? php
2 session_start ();
3, если (! isset ($ _SESSION [ 'я'])) (
4 $ _SESSION [ 'я'] = 0;
5)
6, если (isset ($ _COOKIE [ 'КР'])) (
7 $ _SESSION [ 'я']++;
8 setcookie ( "КР", "Сервер отвечает:". $ _SESSION [ 'я'].',
9 ". $ _COOKIE [ 'КР']);
10)
11? >

Этот код PHP предоставляет основные функции, необходимые для взаимодействия с cookie основе AJAX запросов. Он использует PHP сессии для хранения борьбе и увеличения его каждый запрос сделан. Как вам продлить этот код, можно использовать разные страницы PHP решить, какие действия выполнить, или вы можете включить эту информацию в cookie, посылаемый с клиента. Строки 2-5 обработки основных параметров сессии, установив вразрез с 0, если это первое слово. Строки 6-10 обрабатывать проверку клиента cookie и направление реакции. Это делается путем установки cookie, которые затем будут отправлены с ответом (линия 8-9). Если вы хотите обрабатывать большое ответы сервера, вы должны включить код разделить данные между несколькими cookies.

в этой статье идет речь добавил Кэрол Руденберг
Опровержение: Наш сайт не несет ответственности за информацию, содержащуюся в этой статье. Эта статья никоим образом не отражает взгляды, мнения, мысли или веры каталог статей сотрудников.

Перевод уведомления: В статье "AJAX Fallback Вариант 2 ~ Отправка Запрос Использование Cookie" был переведен с использованием автоматизированной службы перевода. Мы приносим извинения за любые ошибки перевода, что произошло. Спасибо за понимание.

Online: 523 users browsing the articles directory