![]() |
|
   [ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ] |
|
|
Simple AJAX Code-Kit (SACK) и движок DataLifeИсточник: Рыская в интернете в поисках Ajax-готового новостного движка, я наткнулся на
давно всем известный . Хотя этот довольно продвинутый php ресурс и содержит
элементы Ajax, они по-моему не до конца раскрыты и используются довольно скупо.
К сожалению, в самой документации движка ничего не поведано на тему как же
использовать Ajax и создавать свои собственные модули. Придется эту
заколдованную часть раскапывать самому. Тем, кто столкнулся с подобной
проблемой, будет безинтересным узнать некоторые подробности , который довольно
идентичен Ajax-движку SACK можно назвать одним из самых простых и нетребовательных к броузеру Ajax движков, который не требует особых знаний JavaScript или PHP. Особенно для начинающих строителей веб портала SACK позволит завершить проект в самое короткое время. SACK 1.2 включен в блоговый сайт Простой JavaScript пример запроса 1. Создаем наш пользовательский JavaScript файл test.js, в котором описывам следующие функции: • whenLoading() – информируем пользователя о том, что создается SACK и готовятся данные к отправке. • whenLoaded() – информируем пользователя о том, что послан запрос к серверу и данные отправлены. • whenInteractive() – пока ожидаем ответ от сервера, то можем показать какую-нибудт движущуюся картинку или прогресс бар. • whenCompleted() - обрабатываем полученные данные и показываем результат. • doit() – этот код непосредственно создает SACK и устанавливает параметры запроса. Первая строка var ajax = new sack(); создает копию SACK объекта.
В движке DataLife необходимо заменить некоторые переменные и методы на аналогичные (только с другим названием): #1. var ajax = new sack(); Заменить на var ajax = new dle_ajax(); #49. ajax.runAJAX(); Заменить на ajax.sendAJAX Рассмотрим функцию doit() более подробно: • ajax.AjaxFailedAlert = string; - Содержит текст сообщения, которое будет показано пользователю, если его броузер не поддерживает XMLHttpRequest. Если необходимо отключить вывод такого сообщения, посто укажите null. Переменую нет необходимости указывать – содержится сообщение по умолчанию. • ajax.setVar (string name, string value); – позволяет добавить переменную, которая будет добавлена в URLString запрос в виде пары &name=value. В нашем примере мы добавляем имя myTextBox, которое будет содержать данные из текстового поля формы. Данные не будут кодироваться в этой функции. Если необходимо закодировать данные в Unicode, то используйте аналогичную функцию encVar (string name, string value). • ajax.requestFile = string; - переменная, которая содержит имя файла, куда будет отправлятся запрос. В нашем случае мы будем отправлять запрос в login.php. • ajax.method = string; - любой доступный HTTP метод. Наиболее распространенные методы: POST - если посылаются на сервер данные для обработки или GET – если получаем от сервера информацию без предварительной отправки данных запроса. • ajax.element = string; - Элемент страницы, который будет замещен текстом, полученным от сервера после запроса. • ajax.onLoading = function; - указывает на JavaScript функцию, которая запускается в момент инициализации SACK. • ajax.onLoaded = function; - указывает на JavaScript функцию, которая запускается после того, как SACK закончил инициализацию. • ajax.onInteractive = function; - указывает на JavaScript функцию, которая запускается после того, как данные отправлены на сервер и ожидается получение результата. • ajax.onCompletion = function; - указывает на JavaScript функцию, которая запускается после того, как получен ответ с результатами обработки запроса. • ajax.onError = function; - указывает на JavaScript функцию, которая запускается, если получен ответ сервера с ошибкой или с иным кодом шапки нежели HEADER 200 OK. Иногда в целях конспирации полезно отправлять не 200 код (обычный код любой веб страницы), а код переадресации 3хх, 404 – страница не найдена, или 5хх – gateway error... Соответствующий код можно обработать в этой функции. • ajax.encodeURIString = boolean; Переменная по умолчанию установлена в true. Кода переменная уснановлена в false, то посылаемые данные должны содержать только ASCII код или должны быть предварительно обработаны (например, если мы хотим убрать ненужный код из посылаемый на сервер данных – полезно при защите от хакерюг). • ajax.execute = boolean; • ajax.runAJAX (string URLString) – наконец-то, запускаем SACK и все, что создали - отправляем на сервер. В переменную urlstring можно пенредать данные в виде имя=данные&имя=данные, но желательно для этих целей применять вышеуказанный метод setVar(), тогда URLString можно не указывать. Класс SACK (или dle_ajax для DataLife) заполняется соответствующими данными (response, responseXML, responseStatus, и так далее – см. ниже). В движке Datalife аналогичная функция называется ajax.sendAJAX (string URLString) 2. Создаем HTML демо страницу, в которую вставляем наш файл test.js между тегами <HEAD>. Необходимо также добавить tw-sack.js – файл самого движка SACK.
Чтобы подключить наш скрипт в движке DataLife необходимо вставить строку в переменную $ajax в файле index.php Незабудьте поставить DataLife тег {AJAX} в конце страницы перед </BODY>.
Теперь создаем саму форму:
3. Пишем серверную часть login.php, где обрабатываем отправленные данные
Авторизация пользователя в DataLife Для того, чтобы авторизовать пользователя необходимо отправить POST запрос со следующими полями: • login_name=текстовое поле с именем пользователя • login_password=текстовое поле с паролем • action=login – закрытые даные формы • login=submit - закрытые даные формы Для проверки данных вставляем в функцию doit()следующие определения:
Добавили дополнительные переменную и метод: • ajax.execute = bool; - По умолчанию установлено false. Если переменную установить в true, то возвращенный ответ сервера будет расцениваться как JavaScript, а не как простой текст. По окончении обработки запроса будет вызвана функция runResponse, которая и запустит наш JavaScript. • ajax.onShow(string); - Этот метод существует только в DataLife и указанный текст будет выводится в блоке, который появляется во время работы Ajax. Хотите, чтобы этот прямоугольник не показывался при работе ajax – закомментируйте эту строку или вообще уберите.
Дополнительные переменные, которые возвращаются вместе с ответом сервера: • ajax.responseStatus (Array) – Массив, который возвращает header статус: индекс [0] - указывает на номерной код заголовка (например, 200 – при удачном соединении), а индекс [1] - возвращает текствое описание статуса • ajax.failed (Boolean) – Позволяет определить, поддерживает ли броузер XMLHttpRequest (true) или не поддерживает (false). • ajax.response (String) – Текст, полученный от сервера. • ajax.responseXML (String) – Ответ вервера в форме xml. • ajax.vars (Array) – Содержит данные, которые отправлены серверу через URLString в форме name/value, при этом массив строится в форме {['name'] => 'value'}. Так же содержит статус закодированных данных. Также можно использовать дополнительные методы: • sack (string file) – инициализирует SACK. Необязательный метод, который указывает путь и имя файла, доступ к которому будет осуществлен через XMLHttpRequest и содержание файла будет отправлено в переменную requestFile. • createAJAX() - Метод-конструктор данных SACK, который инициализирует объект XMLHttpRequest для совместимости с различными броузерами. Если не поддердивается, то переменная failed выставляется в true. • processURLString (string string, boolean encode); - разбивает сформатированную строку URLString и отправляет данные в форме name=value в различные функции. Установка encode в true указывает на то, должны ли данные кодироваться • createURLString (string URLstring) – Создает корректно сформатированную переменную URLString из любй существующей или переданной строки. • resetData – Обнуляет все данные, возвращет установки по умолчанию. • resetFunctions – Обнуляет функции onEvent, возвращет установки по умолчанию. • reset() - Запускает resetData и resetFunctions, обнуляя все даные до изначально установленного объекта ajax. Возможно, существуют и другие неведомые переменные и функции в движке DataLife, которые, как мы надеемся, когда-нибудь станут явью. Вуаля! [ вверх ]
Ваш комментарий к данному материалу будет интересен нам и нашим читателям!
|
|
WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects |
|