Что такое аякс в магнитоле

Опубликовано: 02.07.2024

Наша жизнь непостоянна. Все в этом мире эволюционирует и изменяется. В том числе и виртуальная реальность. И одно из слов, с которым связаны эти изменения,- это AJAX. Об AJAX уже слышали не только веб-программисты, но и рядовые пользователи. Что реально кроется за этой магической аббревиатурой? Как это использовать на своем сайте? На эти вопросы я и попытаюсь ответить в данной статье.

Впервые об AJAX я услышал весной этого года. Сразу заинтересовался этой технологией, и, как и положено в таких случаях, отправился в поиск за статьями, которые смогли бы ответить на возникшие у меня вопросы: "Что это такое? Как это работает? И в чем преимущества? Что нужно дополнительно установить на сервер/клиент для работы с AJAX? Как это можно использовать на своем сайте?". Прочтя с десяток статей, я получил ответ лишь на первые два вопроса, но на остальные ответа так нигде не нашел. И лишь после прочтения нескольких публикаций на английском языке я окончательно понял, что к чему. Это и подвигло меня к написанию данного материала.

В первую очередь статья адресуется подготовленным людям, пишущим программы для интернета и знакомым с такими терминами как "объект", "метод", "свойства". Однако частично может оказаться полезной и тем, кто просто интересуется данным вопросом. В списке литературы имеется необходимый перечень ссылок, воспользовавшись которыми вполне реально освоить технологию "с нуля".

По ходу изложения под термином "браузер" мы будем понимать браузеры: Internet Explorer 5.0+, Safari 1.3 и 2.0+, Netscape 7+, Opera 8.5+, Mozilla Firefox (плюс означает данную версию и более новые). Если речь станет заходить о других версиях, об этом будет упоминаться отдельно."Что это такое? Как это работает и в чем преимущества?"

Для того чтобы понимать, какие преимущества дает AJAX, нужно знать, как работают веб-приложения в настоящее время. А работают они по клиент-серверной технологии (рис. 1).

Пользователь в браузере открывает какую-либо страницу page. На странице есть гиперссылки, которые ведут на другие страницы. При нажатии на любую из них браузер посылает запрос URL на сервер, с которым связана эта ссылка. Если в природе не существует сервера, связанного с этой ссылкой (например, когда, набирая URL в адресной строке, вы ошиблись при написании имени ресурса), или имеются проблемы связи с интернетом, то браузер сгенерирует страницу, подобную показанной на картинке (так она выглядит в Operа-е):

В случае существования сервера, но отсутствии на нем документа, указанного в запросе сервер сам создаст HTML страницу с описанием ошибки. Например, это может быть всем известная 404-ая ошибка (документ не найден). Или, если все верно, в ответ сервер отдаст новую страницу. В любом случае, в браузер будет загружена новая страница new_page, даже если по сравнению со старой на ней изменилась лишь пара слов. Довольно существенный минус данной технологии. Кроме того, работа ведется в синхронном режиме. То есть после того как браузер отослал на сервер запрос он ожидает от него ответ, и пока ответ не получен ничего предпринимать не будет. А порой ответ, и загрузка новой страницы может длиться слишком долго. Настолько долго, что пользователь может не дождаться загрузки страницы и просто закрыть её. Поэтому веб-программмисты прибегают к некоторым уловкам.

Например, используя DOM методы языка JavaScript [1], можно динамически изменять фоновый рисунок блока без перезагрузки страницы. Это обеспечивает необходимую интерактивность. При наведении курсора мыши на ячейку таблицы исходная фоновая картинка pic_1.jpg заменяется pic_2.jpg. При уходе курсора с ячейки происходит обратный процесс.

Или такой пример. В файл с изображением в формате JPEG можно записать (и прочитать) метаданные EXIF. Многие интернет фоторесурсы позволяют для отображаемой фотографии показать и эти данные. Но они появляются только после нажатия соответствующей кнопки на экране. При этом обновление страницы не происходит. Делается это очень просто. EXIF данные находятся на странице, но расположены в скрытом блоке с помощью CSS (display: none). При нажатии на кнопку блок становится видимым (display: block). Минусы очевидны: вместе со страницей передаются данные, которые, возможно, не будут использованы; отобразить можно лишь те данные, которые были присланы вместе со страницей.

Когда-то клиент-серверная технология способствовала развитию сети. Но как это нередко бывает то, что двигало прогресс в определенный период истории, чуть позже начинает этот прогресс тормозить. В данном случае становилось очевидным, что клиент-серверная технология в чистом виде не может удовлетворить всем требованиям, которые предъявляются к некоторым веб-приложениям. Требовалось какое-то новое решение. И оно появилось в виде AJAX подхода к написанию веб-приложений.

Широкое распространение этого понятия началось с публикации в англоязычной части интернета статьи Джесси Джеймса Гарретта "Новый подход к веб-приложениям" в феврале 2005 года [2]. Статья писалась проектировщиком и для проектировщиков. Но со статьей ознакомилось много человек, в том числе и программисты. Которые и поспешили забросать автора электронными посланиями с вопросами о технических деталях реализации данного подхода. Писем, видимо, было настолько много, что уже в декабре того же года Гаррету в предисловии одной из книг по AJAX пришлось дать пояснения, что он не является программистом, и вопросы по конкретной реализации AJAX-приложений не к нему ("The truth is, I've never built an Ajax application. Sure, I've worked on Ajax projects. . ").

Так в чем ключевое отличие AJAX технологии от классической клиент-серверной? Это наличие AJAX-движка, состоящего из двух частей: клиент-приложение (написанное на языке JavaScript) и сервер-приложение (написанное на любом серверном языке). Также немного другой логикой общения приложения-клиента с сервером (рис. 2).

Теперь при активации какого-либо элемента управления интерфейса браузер не делает запрос новой страницы с сервера, а запускает клиентскую часть. А уже приложение-клиент, в свою очередь, обращается к серверу через запрос requst и запрашивает только те данные, которые должны измениться на странице. После получения данных data от приложения-сервера клиент-приложение производит обновление части страницы через DOM методы без перегрузки всей страницы в целом. При этом возможна работа в асинхронном режиме. То есть когда пользователь не дожидается получения ответа с сервера и перегрузки страницы, а продолжается работать со страницей page, как ни в чем не бывало.

Большой плюс данного подхода в том, что он не исключает работу по клиент-серверной схеме. То есть на одной и той же странице часть элементов управления может реализовывать клиент-серверную технологию, а часть - технологию AJAX.

Тут мне хочется сделать небольшое лирическое отступление. Немало статей, в которых говорится о том, что AJAX это не технология, это подход к написанию приложения, идея. В принципе, верно, все, что нас окружает и есть идеи, но лично я настаиваю на термине "технология AJAX" для подчеркивания того факта, что это еще одна технология взаимодействия клиентского и серверного приложений (наряду с клиент- и файл-серверными технологиями)."Что нужно дополнительно установить на сервер/клиент для работы с AJAX?"

Все вышеизложенное было чисто теоретическими рассуждениями разработчика, которые и написал Гарретт. Настало время перейти к практическому рассмотрению того, на чем основывается AJAX и что конкретно нужно использовать для написания AJAX-приложений.

  • HTML/XHTML [3]/[4] для написания разметки страницы;
  • CSS [5] для визуального оформления страницы;
  • DOM [1] для динамического изменения страницы в ответ на действия пользователя;
  • XML [6, 7] для обмена данными между клиентской и серверными частями;
  • JavaScript [8] собственно для написания AJAX движка, для обеспечения интерактивности;
  • XML объект [9] для осуществления запросов к серверу.

Когда я решил поработать с AJAX-приложением, то подумал, что для поддержки нужно что-то поставить на сервер. Какой-либо модуль, может, в виде dll. Но как потом понял, ничего никуда устанавливать не нужно. Требуется лишь корректно написать движок и все. Возникает вопрос, а что за AJAX-движки распространяются в сети? Ответ прост: это уже готовые приложения, которые предназначены для каких-либо задач, и которые в готовом виде можно использовать на своем сайте. Например, существует библиотека для PHP, которая называется xAjax. Она включает в себя как клиентский скрипт, написанный на JavaScript, так и серверный скрипт, с которым JavaScript взаимодействует. Помните об этом! У меня был случай, когда человек думал, что AJAX-приложение это только JavaScript, использующий XML объект, и все. Но это далеко не все. Есть еще скрипт на стороне сервера, логику работы которого также придется проектировать, а потом писать код.

Рассматривать готовые библиотеки я не буду. В документации, идущей с ними, все расписано достаточно подробно. Остается лишь, используя их API, подключить их к своему сайту. Наша цель ознакомится с начинкой таких приложений. Эти знания помогут, как самому написать Ajax-приложение, так и разобраться в уже готовом решении.

Основа любого AJAX-приложения - это XML объект, с его рассмотрения и начнем.

У данного объекта немало свойств и методов [10], но не все из них поддерживаются ведущими браузерам. Полная поддержка есть только в FireFox-е. Поэтому привожу только то, что будет работать в современных браузерах [9].

СВОЙСТВА:

readonly onreadystatechange function

Указывает функцию обратного вызова (callback function), которая будет вызываться каждый раз, когда будет изменяться readyState свойство. Несмотря на то, что вызывается функция, параметры передать в нее не получиться. Но об этом чуть позже в примере.

readonly readyState integer

  • 0 - не неинициализированный (uninitialized), метод open() еще не был вызван;
  • 1 - загружается (loading), метод send() еще не вызван;
  • 2 - загружен (loaded), метод send() был вызван и ответные заголовки/статус (свойство status) получены;
  • 3 - интерактивный (interactive), идет прием данных, которые доступны через свойство responseText;
  • 4 - завершенный (completed), в ответ на запрос получены не только все заголовки и статус, но и приняты все данные от сервера, ответ завершен.

readonly responseText string

readonly responseXML object

Ответ сервера в виде объекта DOM Document. Используется, если ответ сервера является корректным XML документом. Если документ не корректный, данные не получены или еще не оправлены, то свойство равно NULL. Только чтение.

readonly status string

МЕТОДЫ:

void abort()

Прерывает запрос или получение данных. Очищает все свойства объекта, которым присваиваются начальные значения. Метод полезен в связке с таймером, когда по прошествии определенного времени с момента запроса (вылете в тайм-аут) ответ от сервера так и не был получен.

string getAllResponseHeaders()

string getResponseHeader(string header)

void open(string method, string uri, [boolean asynch])

void send(string data)

void setHeader(string header, string value)

Теперь, когда у нас есть не только необходимые теоретические знания, но и представление о том, на что практически опирается AJAX, можно преступать к написанию своего приложения. Далее я привожу один пример от момента формулирования задачи до полной ей реализации, в виде приложения, поясняя некоторые тонкости по ходу изложения.

Итак, у нас задача: нужно реализовать базу данных (БД) драйверов для различных устройств. При этом БД настолько большая, что нет смысла пересылать её приложению-клиенту и делать выборку из неё посредством JavaScript. Из-за изменения одного значения на странице перегружать её тоже нежелательно. Лично я для реализации данной задачи применяю для серверных скриптов PHP, а реализации БД применяю XML файл.

Структуру БД выбираю следующую:

Листинг БД файл data.xml: ATI 9600 128 DDR (128bit) ATI 9600 256 DDR (128bit) ATI 9600XT 256 DDR (128bit) ATI X800GTO 256 DDR (256 bit) ATI X1300 512 DDR(128bit) ATI X1300 256 DDR (128bit) NVidia 6600 128 DDR (128bit) NVidia 7800GS 256 DDR (256 bit) ATI X1300Pro 256 DDR (128bit) ATI X1600Pro 256 DDR (128bit) ATI X1800GTO 256 DDR (256bit) ATI X1600Pro 256 DDR (128bit) ATI X1900XT 512 DDR (256bit) NVidia 6600 Silencer 128 DDR (128bit) NVidia 6600GT 128 DDR (128bit) ATI X1900XT 512 DDR (256bit) ATI X1900XTX 512 DDR (256bit) ATI X800 SilentPipe 128 DDR(256bit) Nvidia 6600GT 128 DDR (128bit) NVidia 6600GT PassiveHeatsink 128 DDR (128bit) PCI-E ATI X550 128 DDR (128bit) PCI-E ATI X800GT Uniwise 256 DDR (256 bit) ATI X800GTO 256 DDR (128bit) Audigy 2 6.1 Audigy 2 ZS 7.1 X-Fi Platinum Audiophile 192 Revolution 5.1 Audiophile Audiophile Fast Track PIXMA iP 90 PIXMA iP4200 PIXMA iP6600D Picture Mate 100 Stylus Color C48 Stylus Color C87U DeskJet 1280 DeskJet 5443 Photo Smart 385 Laser Shot LBP2900 Laser Shot LBP3300 ML 1615 ML 2015 LaserJet 1018 LaserJet 2420 LaserJet 2420DN 4200F LiDE500F LiDE60 Perfection 1270 Perfection 3590 Perfection 4990 Bear Paw 2400CU Perfection 4990

Как в этой БД человек ведет поиск? Скорее всего, он от корневого элемента шел бы по дереву документа до тех пока в нужной ветви не нашел ссылку или убедился, что драйвера для данного устройства нет в базе. Также поступим и мы, используя для нахождения нужного узла или набора узлов выражения языка XPath [11].

Листинг формы для отправки данных index.htm:

В форме есть две переменные: path и flag. В первой хранится запрашиваемый путь, который отправляется на сервер. Так как один элемент в форме уже есть, то у этой переменной уже есть начальное значение. Вторая переменная служит для того, чтобы указать серверному скрипту, что из документа нужно извлечь определенный элемент Device. Кроме того, формат возвращаемых данных с сервера изменится.

Как я уже говорил, в функцию свойства onreadystatechange нельзя передать параметры. Точнее нельзя передавать параметры, которые являются объектами. Поэтому в самом начале создаем переменную, в которой и будем хранить ссылку на вызвавший функцию объект. Поскольку данная переменная находится в глобальной зоне видимости переменных, то обратиться к ней можно будет из любой части программы. На данный момент это самый разумный способ передать параметры call-back функции свойства onreadystatechange объекта.

А теперь разберем по шагам работу движка.

При наступлении события onblur (элемент select потерял фокус) вызывается функция sendData(), которая и подготавливает POST данные для оправки запроса. Кроме того, она формирует XPath выражение в зависимости от значения переменной flag=0 (например, //Devices/VideoCards) или flag=1 (например, //Devices/VideoCards/AGP/Sapphire/Device["ATI 9600XT 256 DDR (128bit)"]).

Далее вызываем функцию sendRequest(), в которую передаем URL серверного скрипта, а также переменную типа строка, в которой содержатся готовые POST-данные. И первым делом создаем XML объект, ссылку на который храним в переменной requestObj. Функция является кросс-браузерной, и будет работать во всех браузерах.

Когда-то обращение к функции я делал сразу при загрузке страницы через и больше не создавал XML объект. Но как оказалось, это работает для всех браузеров кроме IE, который каждый раз требует создавать новый объект. Поэтому вызов данной функции делается каждый раз перед отправкой данных.

После отправки данных браузер ждет ответа с сервера. При каждом изменении свойства readyState будет вызываться функция responseServer(). Если статус ответа пришел с кодом "200" (все нормально), то будет вызвана функция addSelect(), которая и добавит полученный данные в DOM текущего документа. Все браузеры будут ждать ответа от сервера. Однако по истечении некоторого времени (time-out) принудительно назначат XML = 4 и перестанут ожидать ответа с сервера. Например, для Opera значение тайм-аута составляет 10 секунд. Используя другие статусы, можно добавить в движок обработчик ошибок в ответах сервера.

Функция addSelect() добавляет в DOM текущего документа еще один узел DIV, в который и помещает ответ с сервера. Может возникнуть вопрос, почему используется свойство responseText, а не responseXML? У кого-то обязательно возникнет желание, используя это свойство, импортировать ответ сервера (а серверный скрипт в ответ присылает XML документ) прямо в DOM документа. Возникло такое желание и у меня. Я хотел импортировать корневой элемент присланного XML файла и все его потомки методом importNode. Но браузер импортировал элемент без потомков, даже несмотря на то, что второй параметр данного метода был установлен в true: importNode(Object importedNode,true). Поэтому не точная реализация этого метода пока исключает его использование.

Равнозначное решение было найдено, используя innerHTML метод элемента.

На этом работа клиентской части заканчивается. Оставшаяся нерассмотренной функция reset() призвана вернуть DOM документа к начальному виду. Достичь того же можно, обновив страницу по F5, но AJAX-движок как раз и пишется для того, чтобы избежать перезагрузки страницы. Поэтому все элементы, добавленные в документ скриптом, должны быть удалены из него также скриптом.

В ответ на запрос серверный скрипт формирует XML данные вида: childrenElementName_1 . childrenElementName_1

Если запрашиваемый узел имеет имя Device, то возвращается обычный отформатированный текст. Серверный скрипт написан на PHP V5 и не будет работать на более ранних версиях этого интерпретатора, так как расширение для работы с DOM было введено в этот язык только с пятой версии, и заменило собой расширение DOM XML, интерфейс которого не соответствовал спецификации. А теперь посмотрим на код серверного скрипта.

Во время поездок на автомобиле, многие привыкли использовать мультимедийную систему для проигрывания аудиофайлов. Но в некоторых транспортных средствах такая опция просто не предусматривается. В деле всегда может выручить радиоприемник, который точно найдется в любом авто. Но даже при использовании такого простого устройства могут возникать некоторые сложности.

1f774ed2636ace67c8d221fc16a91530_w650.jpg

Рассматривать причину заиканий следует в свете 3 малоизвестных обычному автомобилисту функций, которые предусмотрены практически в каждой автомагнитоле

Радиоприемник в автомобиле - не самое технологичное решение, особенно если речь идет о современном транспорте. Однако, такие системы при отсутствии Интернета и доступа к Сети могут скрасить время пребывания за рулем. Но даже в радиоприемнике порой можно замечать некоторые ошибки.

Многие могли сталкиваться с ситуациями, когда во время прослушивания радиостанции запись прыгает с одного места на другое, будто диджей намеренно меняет дорожку трека. Никакой проблемы в данном случае нет, а само явление объясняется очень просто.

Рассматривать причину заиканий следует в свете 3 малоизвестных обычному автомобилисту функций, которые предусмотрены практически в каждой автомагнитоле. Речь идет о системах, которые на магнитоле обозначаются аббревиатурами TA, PTY и AF. В России об этих функциях практически не знают, из-за чего и не используют. Главная особенность заключается в том, что все 3 кнопки располагаются рядом друг с другом.

TA можно расшифровать как "Traffic Announcement". В переводе на русский это "оповещение о дорожной обстановке". Если включить данную функцию, автомобильная магнитола будет в автоматическом режиме переключаться на частоту оповещений о ситуациях по пути вашего следования. Речь идет о таких обстоятельствах, как пробки, аварии, объезды, дорожные работы и прочее.

1446f069a2b2dbad0a4603be516cdd75_w650.jpg

Если активировать данную функцию, автомагнитола будет самостоятельно искать альтернативную частоту. Происходит это в том случае, если ухудшается сигнал связи

PTY - "Programm Type". Данная функция может сортировать радиостанции по определенному критерию. К примеру, система может показывать список радиостанций, на которых проигрывается рок-музыка, или волны, на которых оповещается классика.

AF - "Alternative Frequencies". Если активировать данную функцию, автомагнитола будет самостоятельно искать альтернативную частоту. Происходит это в том случае, если ухудшается сигнал связи. Именно эта функция относится к представленной выше ситуации.

Представим, что автомобилист передвигается по дороге и прослушивает радиостанцию на несущей частоте. Когда транспортное средство проезжает определенную зону, прием может ухудшаться. Это происходит, если на одном участке вещают сразу 2 вышки данной радиостанции в разных городах. Автомагнитола с включенной функцией AF начинает самостоятельно выбирать вышку с более качественным сигналом.

c918350b11e9729f303ac7511548a92d_w650.jpg

Избавиться от такого эффекта тоже можно. Для этого достаточно отключить функцию AF

Не стоит полагать, что вышки в разных городах вещают синхронно. Разница в эфире может находиться в пределах 2-10 секунд. Именно поэтому можно наблюдать скачки в проигрывании музыки. Не трудно догадаться, что избавиться от такого эффекта тоже можно. Для этого достаточно отключить функцию AF. Практика показывает, что в пограничных зонах такая опция является лишней и мешает комфорту.

Данные кнопки появились еще задолго до современных цифровых технологий. Согласно истории, они нормально работали только на территории США и Европы. В современных условиях пользы от данный опций нет, поэтому можно смело обходиться без них.

Итог. Если в процессе проигрывания радиостанции запись перескакивает назад или вперед, это может говорить об активированной функции AF. Ее можно отключить на консоли автомагнитолы.

AJAX — это аббревиатура, которая означает Asynchronous Javascript and XML. На самом деле, AJAX не является новой технологией, так как и Javascript, и XML существуют уже довольно продолжительное время, а AJAX — это синтез обозначенных технологий. AJAX чаще всего ассоцириуется с термином Web 2.0 и преподносится как новейшее Web-приложение.


При использовании AJAX нет необходимости обновлять каждый раз всю страницу, так как обновляется только ее конкретная часть. Это намного удобнее, так как не приходится долго ждать, и экономичнее, так как не все обладают безлимитным интернетом. Правда в этом случае, разработчику необходимо следить, чтобы пользователь был в курсе того, что происходит на странице. Это можно реализовать с использованием индикаторов загрузки, текстовых сообщений о том, что идёт обмен данными с сервером. Необходимо также понимать, что не все браузеры поддерживают AJAX (старые версии браузеров и текстовые браузеры). Плюс Javascript может быть отключен пользователем. Поэтому, не следует злоупотреблять использованием технологии и прибегать к альтернативным методам представления информации на Web-сайте.

  • Возможность создания удобного Web-интерфейса
  • Активное взаимодействие с пользователем
  • Частичная перезагрузка страницы, вместо полной
  • Удобство использования

Обмен данными

Обмениваться данными с сервером можно двумя способами. Первый способ — это GET-запрос. В этом запросе вы обращаетесь к документу на сервере, передавая ему аргументы через сам URL. При этом на стороне клиента будет логично использовать функция Javascript`а escape для того, чтобы некоторые данные не прервали запрос.


Не рекомендуется делать GET-запросы к серверу с большими объемами данных. Для этого существует POST-запрос.


Клиент часть, написанная на Javascript, должна обеспечивать необходимую функциональность для безопасного обмена с сервером и предоставлять методы для обмена данными любым из вышеперечисленных способов. Серверная часть должна обрабатывать входные данные, и на основе их генерировать новую информацию (например, работая с базой данных), и отдавать ее обратно клиенту. Например, для запроса информации с сервера можно использовать обычный GET-запрос с передачей нескольких и небольших по размеру параметров, а для обновления информации, или добавления новой информации потребуется использовать уже POST-запрос, так как он позволяет передавать большие объемы данных.


Как уже было сказано, AJAX использует асинхронную передачу данных. Это значит, что пока идёт передача данных, пользователь может совершать другие, необходимые ему действия. В это время следует оповестить пользователя о том, что идёт какой-либо обмен данными, иначе пользователь подумает, что произошло что-то не то и может покинуть сайт, или повторно вызвать «зависшую», по его мнению, функцию. Индикация во время обмена данными в приложении Web 2.0 играет очень важную роль: посетители могли еще не привыкнуть к таким способам обновления страницы.


Ответ от сервера может быть не только XML, как следует из названия технологии. Помимо XML, можно получить ответ в виде обычного текста, или же JSON (Javascript Object Notation). Если ответ был получен простым текстом, то его можно сразу вывести в контейнер на странице. При получении ответа в виде XML, обычно происходит обработка полученного XML документа на стороне клиента и преобразование данных к (X)HTML. При получении ответа в формате JSON клиент должен лишь выполнить полученный код (функция Javascript`а eval) для получения полноценного объекта Javascript. Но здесь нужно быть осторожным и учитывать тот факт, что с использованием этой технологии может быть передан вредоносный код, поэтому перед выполнением полученного с сервера кода следует его тщательно проверить и обработать. Существует такая практика, как «холостой» запрос, при котором никакой ответ от сервера не приходит, лишь изменяются данные на стороне сервера.


В разных браузерах данный объект обладает разными свойствами, но в целом он совпадает.

Методы объекта XML

Заметьте, что названия методов записаны в том же стиле (Camel-style), что и другие функции Javascript. Будьте внимательны при их использовании.


abort() — отмена текущего запроса к серверу.


getAllResponseHeaders() — получить все заголовки ответа от сервера.


getResponseHeader(«имя_заголовка») — получить указаный заголовок.


open(«тип_запроса»,«URL»,«асинхронный»,«имя_пользователя»,«пароль») — инициализация запроса к серверу, указание метода запроса. Тип запроса и URL — обязательные параметры. Третий аргумент — булево значение. Обычно всегда указывается true или не указывается вообще (по умолчанию — true). Четвертый и пятый аргументы используются для аутентификации (это очень небезопасно, хранить данные об аутентификации в скрипте, так как скрипт может посмотреть любой пользователь).


send(«содержимое») — послать запрос на сервер и получить ответ.


setRequestHeader(«имя_заголовка»,«значение») — установить значения заголовка запроса.

Свойства объекта XML

onreadystatechange — одно из самых главных свойств объекта XML С помощью этого свойства задаётся обработчик, который вызывается всякий раз при смене статуса объекта.


readyState — число, обозначающее статус объекта.


responseText — представление ответа сервера в виде обычного текста (строки).


responseXML — объект документа, совместимый с DOM, полученного от сервера.


status — состояние ответа от сервера.


statusText — текстовое представление состояния ответа от сервера.

  • 0 — Объект не инициализирован.
  • 1 — Объект загружает данные.
  • 2 — Объект загрузил свои данные.
  • 3 — Объек не полностью загружен, но может взаимодействовать с пользователем.
  • 4 — Объект полностью инициализирован; получен ответ от сервера.

Создание объекта XML

Как уже говорилось выше, создание данного объекта для каждого типа браузера — уникальный процесс.


Например, для создания объекта в Gecko-совместимых браузерах, Konqueror`е и Safari, нужно использовать следующее выражение:


var Request = new XML


А для Internet Explorer`а используется следующее:


var Request = new ActiveXObject("Microsoft.XML


var Request = new ActiveXObject("Msxml2.XML


Теперь, чтобы добиться кроссбраузерности, необходимо сложить все функции в одну:


После всего этого можно создавать данный объект и не беспокоится за работоспособность на популярных браузерах. Но создать объект можно в разных местах. Если создать его глобально, то в определенный момент времени возможен будет только один запрос к серверу. Можно создавать объект всякий раз, как происходит запрос к серверу (это почти полностью решит проблему).

Запрос к серверу

  • Проверка существования XML
  • Инициализация соединения с сервером.
  • Посылка запрса серверу.
  • Обработка полученных данных.


Создавать запрос стало намного проще. Для примера напишем функцию, которая будет получать содержимое файла на сервере и выводить его в контейнер.


Именно таким образом происходит взаимодействие с сервером.

Обработка ответа

В предыдущем примере мы сделали функцию запроса к серверу. Но она, по сути, небезопасна, так как мы не обрабатываем состояния объекта и состояния ответа от сервера.


Дополним наш код, чтобы он смог выводить визуальное оповещение о процессе загрузки.


Как вы уже знаете, объект XML позволяет узнать статус ответа от сервера. Воспользуемся этой возможностью.

Варианты ответа от сервера

  • Обычный текст
  • XML
  • JSON


JSON — это объектная нотация Javascript. С ее помощью можно представить объект в виде строки (здесь можно привести аналогию с функцией сериализации). При получении JSON-данных вы должны выполнить их, чтобы получить полноценный объект Javascript и произвести с ним необходимые операции. Помните, что такая передача данных и выполнение их не являются безопасными. Вы должны следить за тем, что поступает на исполнение.


Пример кода JSON:


При получении такого кода, производим следующее действие:


После выполнения данного кода вам будет доступен объект responsedata.

Работа с серверными языками программирования

Такая работа ничем не отличается от обычной. Для примеров я возьму PHP в качестве серверного языка. В клиентской части ничего не изменилось, но серверная часть теперь представлена PHP-файлом.


По традиции, начнем с приветствия нашему замечательному миру:


При обращении к этому файлу клиенту вернется строка Hello, World. Как вы понимаете, это представляет широчайшие возможности для построения приложений. На основе передачи аргументов при вызове сервера с помощью XML можно сделать параметризацию вывода, тем самым обеспечив обширную функциональность Web-приложения.


Помимо PHP, можно использовать любой другой серверный язык программирования.

Литература по теме

Статья написана с целью рассказать новичкам о работе AJAX изнутри. Если Вам кажется, что что-то написано неточно или неверно, поправляйте, пожалуйста, меня, для того, чтобы создать достойную статью вместе.


Конечно, если есть возможность, стоит использовать существующие фреймворки, я считаю. Но знать «как оно работает» всё-же необходимо.

Что Такое AJAX И Как Он Работает

AJAX это Асинхронный JavaScript и XML. Это набор методов веб-разработки, которые позволяют веб-приложениям работать асинхронно — обрабатывать любые запросы к серверу в фоновом режиме. Подождите, что снова AJAX? Давайте рассмотрим каждый термин отдельно и разберём, что такое AJAX.

И JavaScript, и XML работают асинхронно в AJAX. В результате любое веб-приложение, использующее AJAX, может отправлять и извлекать данные с сервера без необходимости перезагрузки всей страницы.

Практические AJAX примеры

Подумайте о функции автозаполнения Google. Это поможет вам завершить ваши ключевые слова, пока вы печатаете их. Ключевые слова меняются в реальном времени, но страница остаётся прежней. В начале 90-х, когда интернет был не таким продвинутым, эта функция требовала от Google перезагрузки страницы каждый раз, когда на вашем экране появлялись новые рекомендации. AJAX позволяет обмену данными и уровню представления работать одновременно, не мешая друг другу.

Что такое AJAX Примеры

Концепция AJAX фактически существует со середины 90-х годов. Тем не менее, она получила более широкое признание, когда Google начал внедрять эту концепцию в Google Mail и Google Maps в 2004 году. Сегодня она широко используется в различных веб-приложениях для оптимизации процесса взаимодействия с сервером.

Вот более полезные AJAX примеры в нашей повседневной жизни.

Проще говоря, AJAX упрощает многозадачность. Если вы когда-нибудь заметили похожую ситуацию, когда две операции работают одновременно, причём одна из них работает, а другая бездействует, это может быть сделано с помощью AJAX.

Если вы хотите улучшить свой веб-сайт, не забудьте показать Google и вашим клиентам, что вы позаботились о проблемах безопасности. Сертификат SSL ОБЯЗАТЕЛЕН в наши дни.

Если у вас ещё нет SSL-сертификата, возьмите его у Hostinger.

Как это работает?

Помните, что технология AJAX не является ни единой технологией, ни языком программирования. Как уже говорилось ранее, AJAX — это набор методов веб-разработки. Система обычно состоит из:

  • HTML/XHTML для основного языка и CSS для презентации.
  • Объектная модель документа (DOM) для динамического отображения данных и их взаимодействия.
  • XML для обмена данными и XSLT для их управления. Многие разработчики начали заменять JSON, потому что он ближе по форме к JavaScript.
  • Объект XML для асинхронного взаимодействия.
  • Наконец, язык программирования JavaScript, чтобы объединить все эти технологии.

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

Диаграмма:

Как работает AJAX

Сравнительная таблица:
  1. отправляется с веб-браузера на сервер.
  2. Сервер получает и впоследствии извлекает данные.
  3. Сервер отправляет запрошенные данные в веб-браузер.
  4. Веб-браузер получает данные и перезагружает страницу для отображения данных.
  1. Браузер создаёт вызов JavaScript, который затем активирует XML
  2. В фоновом режиме веб-браузер создаёт к серверу.
  3. Сервер получает, извлекает и отправляет данные обратно в веб-браузер.
  4. Веб-браузер получает запрошенные данные, которые будут непосредственно отображаться на странице. Перезагрузка не требуется.

Послесловие

Анна долгое время работала в сфере социальных сетей и меседжеров, но сейчас активно увлеклась созданием и сопровождением сайтов. Она любит узнавать что-то новое и постоянно находится в поиске новинок и обновлений, чтобы делиться ими с миром. Ещё Анна увлекается изучением иностранных языков. Сейчас её увлёк язык программирования!

Ajax

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




Нам предложили протестировать систему безопасности Ajax, которая с 2011 года присутствует на рынке и успела хорошо себя зарекомендовать. А главное, это не очередной производитель, закупающий безымянные гаджеты-болванки в Китае для последующего брендирования своей торговой маркой. Важное преимущество Ajax в их собственных разработках, регулярных внешних аудитах и партнерстве с охранными предприятиями. В частности, производитель использует технологию радиосвязи Jeweller с многоуровневой защитой, которая была разработана с нуля именно для этих систем безопасности. Система работает под управлением устойчивой к вирусам и кибер-атакам операционной системой OS Malevich.

Ajax

Для безопасности системы в каждом устройстве используется уникальный идентификатор, исключающий подмену датчиков и устройств, переключение частот, чтобы противостоять глушению и шуму в эфире, шифрование радиопередачи, использующее алгоритм с плавающим ключом, четыре канала связи для отправки сигналов тревоги (Ethernet, 2G, 3G и Wi-Fi) и опрос работоспособности датчиков с периодом от 12 секунд. Подробнее обо всех использующихся программных и аппаратных технологиях советую прочитать на сайте производителя, там очень подробно и наглядно описаны преимущества, которые должны стать хорошей базой, чтобы рассматривать к покупке продукты Ajax.

Ajax

На выбор можно взять один из трех стартовых наборов черного или белого цвета и дополнить их вспомогательными гаджетами. В StarterKit входит централь управления Hub с поддержкой сетей 2G и Ethernet, датчик движения MotionProtect, датчик открытия окон/дверей DoorProtect и карманный брелок управления с тревожной кнопкой SpaceControl. В StarterKit Plus — хаб из комплекта (Hub Plus) уже поддерживает сети 3G, имеет второй слот для сим-карты и может работать по Wi-Fi, а также поддерживает больше сценариев, устройств и камер видеонаблюдения, что позволяет использовать его для защиты более крупных объектов. Самый дорогой StarterKit Cam поддерживает фотоверификацию. Набор содержит новый датчик движения с фотокамерой MotionCam, с помощью которого пользователи получают моментальные уведомления при определении движения, а также серию анимированных фотографий, что позволяет исключить ложные тревоги и вызовы охранных групп. Важный момент — MotionCam разработан для контроля безопасности, а не личной жизни пользователей. Датчик движения не делает фото по запросу — только при тревоге. Все данные шифруются при передаче и хранении, а кроме того, команда Ajax специально разработала новый радиопротокол Wings для передачи графических данных. Он позволяет за считанные секунды отправлять изображения на хаб на расстояние до 1700 метров и обеспечивает рекордную энергоэффективность — батарейки в датчике работают до четырех лет. В комплекте также идёт Hub 2, который и поддерживает новые датчики движения с фотокамерой. А вот конфигурация с видеонаблюдением в ассортименте Ajax пока не представлена, так как они не разрабатывают камеры. Впрочем, производитель не игнорирует эти потребности пользователей и позволяет купить камеры сторонних производителей, которые способны полноценно интегрироваться в систему безопасности. На данный момент в систему можно интегрировать камеры и регистраторы Dahua, Hikvision, Univiev, Safire и любые другие с поддержкой RTSP.

MotionProtect Outdoor

Дальнейшее оснащение системы безопасности зависит от потребностей пользователей и особенностей охраняемого объекта. Например, для загородных домов с пристройками, больших офисов и производств можно взять ретранслятор сигнала ReX. А также докупить датчики движения, открытия дверей и окон, разбития стекла. В загородных домах имеет смысл дополнить систему уличным модулем MotionProtect Outdoor — благодаря двухэтапному алгоритму LISA датчик может игнорировать животных, птиц и качающиеся на ветру деревья, чтобы лишний раз не беспокоить хозяев. В дополнение к датчикам можно приобрести домашнюю или уличную сирену, которая отпугнет злоумышленников громким звуком и поможет привлечь внимание соседей. Впрочем, не обязательно сразу тратиться на полный комплект устройств. Добавление новых гаджетов происходит очень легко и быстро, так что можно постепенно в комфортном для себя режиме покупать новые датчики и подстраивать Ajax под свои нужды.

Ajax обзор

Не менее важными в системе безопасности считаются датчики пожара и протечек. FireProtect регистрирует резкое повышение температуры, превышение граничной температуры и задымление, а FireProtect Plus также определяет наличие бесцветного и чрезвычайно токсичного угарного газа, что может спасти жизнь в критической ситуации. Датчик LeaksProtect реагирует на протечку воды. Это поможет вовремя обнаружить прорыв трубы, протечку стиральной или посудомоечной машины, чтобы как можно быстрее отреагировать и не затопить соседей. Также датчик не требует установки и способен сообщить пользователю, когда вода высохнет. Кроме того, у Ajax есть умная розетка и два вида реле (силовое и слаботочное).

Ajax обзор

Для управления системой могут использоваться пульт-брелок SpaceControl и настенная цифровая панель KeyPad. Также есть миниатюрная тревожная кнопка / пульт управления сценариями Button, которая теперь поддерживает два режима: тревога и управление устройствами автоматизации. В один клик можно активировать определенный сценарий, например, одновременно выключить освещение, запереть двери и окна, открыть гаражные ворота. Однако больше всего возможностей предлагает пользователям мобильное приложение Ajax Security System для iOS и Android. С его помощью можно просматривать список событий в ленте уведомлений, узнавать о срабатывании сигнала тревоги с помощью push-уведомлений (а также смс или звонка), контролировать показатели устройств в любое время, получать напоминания о постановке и снятии с охраны при выходе из дома, а также в любой момент менять конфигурации устройств. Само приложение сделано максимально простым и интуитивно понятным, так что разобраться с ним и полноценно пользоваться смогут даже те, кто раньше не имел дел с охранными системами. При этом не нужно обманываться этой легкостью и дружелюбностью, на самом деле Ajax — очень мощное профессиональное защитное решение, которое можно подстраивать под свои запросы.

Ajax обзор

В частности, можно настраивать группы пользователей и давать им разные права доступа. Некоторые могут только получать уведомления и сигналы тревоги, а определённые пользователи будут иметь доступ к управлению и настройке системы, а также программировать сценарии автоматизации. На последнем стоит остановиться подробнее. Сценарии Ajax позволяют сократить количество рутинных действий, а устройства автоматизации Socket, WallSwitch, и Relay вместе с домашними электроприборами образуют единую экосистему. Например, это может быть автоматическое включение ночного режима (автоматическая постановка под охрану периметра дома), система антипотоп с перекрытием воды при тревоге датчика протечки, освещение территории при проникновении или имитация присутствия с использованием освещения и работы аудиосистемы, обогрев по графику для снижения расходов на отопление, обесточивание вероятной причины возгорания при пожарной тревоге и так далее. Кроме того, в зависимости от потребностей пользователи могут выбрать один из трех уровней безопасности. Из коробки работает «Режим умной защиты» — когда система держит постоянную связь с облачным сервером и в режиме реального времени отчитывается о своей работе и угрозах на смартфон владельца push-уведомлениями об инцидентах и событиях. Второй уровень — «Режим полной автономной защиты», в котором используется SIM-карта (нужно подобрать наиболее подходящий тариф у оператора) и тогда Ajax сможет посылать уведомления в SMS и с помощью звонков пользователю, чтобы не пропустить ничего важного, если вдруг дома пропадет интернет. Самый мощный уровень — «Режим профессиональной защиты», когда Ajax связана с пультом охранной компании и отправляет сигналы тревоги одновременно на телефон владельца и в охранную фирму. Ajax принимают на пульт 1129 охранных компаний по всему миру, например, в России это «Дельта», «Крона», «Arkan», «Волкодав» и другие.

Ajax обзор

Ajax — беспроводная система. Все датчики работают на комплектных батарейках до 7 лет ((благодаря энергоэффективности протокола Jeweller)), а хаб хоть и требует подключение к сети, но в случае перебоев с электричеством способен до 16 часов работать автономно. А при потере питания все пользователи сразу же получают соответствующие уведомления. Монтаж максимально легкий и быстрый, для установки системы почти не требуются инструменты. Например, это актуально для съемного жилья, когда может не быть возможности много сверлить или штробить стены, и хотелось бы забрать систему с собой после переезда. В приложении есть инструкции по самостоятельному монтажу, но даже если любой человек легко справится с установкой и настройкой, производитель все-таки рекомендует обратить к специалистам. Например, чтобы правильно расположить датчики движения с учетом расположения зеркал, кондиционера или камина. Работа займет немного времени и услуга не очень дорогая, зато можно быть уверенным в отсутствии ложных срабатываний или слепых зон из-за неправильной установки.

Ajax

Если говорить о практической реализации и стоимости решений, возьму в качестве примера двухкомнатную съемную квартиру, в которой сейчас живу. Если не стоит задача построить себе Форт-Нокс, для знакомства с системой будет достаточно стандартного StarterKit набора стоимостью 14 990 рублей, а позже его всегда можно дополнить необходимыми датчиками. Если же требуется получить систему с максимальным уровнем защиты — цена вопроса будет совсем другой. В двушку, как на планировке, понадобятся следующие устройства: Hub 2 — новая централь с поддержкой датчиков с фотокамерой MotionCam, DoorProtect (4x) — датчики открытия (на входную дверь, 2 окна и балкон), MotionCam — датчик движения c камерой (в коридор, нацелить на входную дверь), MotionProtect (2x) — датчик движения (в гостиную и спальню), SpaceControl (2x) — брелок управления системой, HomeSiren — домашняя сирена, LeaksProtect (3x) — датчики протечки (в ванную, туалет и на кухню), FireProtect — датчик пожара (на кухню). Общая стоимость этого набора для двухкомнатной квартиры составит 51 440 рублей.

Ajax обзор

В итоге Ajax оставил у меня исключительно приятные впечатления. Если раньше я 50/50 думал насчет системы безопасности у себя дома, то теперь склоняюсь к тому, чтобы все-таки ее использовать. Едва ли на максимальном уровне с услугами охранного предприятия, но все-таки дополнительная безопасность не повредит. К тому же, мне очень понравилось, насколько легко Ajax монтируется, настраивается и расширяется дополнительными датчиками. Эта система подкупает с самого начала, уже по стильной и аккуратной упаковке и отличному промышленному дизайну, а закрепляет приятное впечатлением тем, насколько просты в использовании оказались все те серьезные технологии безопасности, которые скрываются за стильной и дружелюбной внешностью.

Читайте также: