Joomla 1.5: Использование Ajax - Обработка на стороне сервера.
Индекс материала |
---|
Joomla 1.5: Использование Ajax |
Обработка на стороне сервера. |
Обработка на стороне клиента. |
Обходим политику единого источника |
Все страницы |
Обработка Ajax - запросов на стороне сервера.
Серверная часть вашей реализации Ajax может быть уже каким - либо готовым веб-сервисом, в этом случае она уже написана за вас. Но, что делать, если вам нужно написать код сервера самостоятельно, то имеет смысл взять за основу Framework Joomla. Хотя можно реализовать серверную сторону и без Joomla, но в таком случае вам будет не хватать целого ряда важных функций, которые делают написание безопасного серверного Ajax - кода очень простым. ( Это, блин, не моё - это перевод!)
Как правило ответ сервера является XML или JSON - форматом. В Joomla 1.5 которая поддерживает MVC это делается особенно легко, сука, и не принуждённо...Просто добавьте новый класс "вида" в директорию view, в файл с именем view.xml.php, или view.json.php в зависимости от требуемого формата. Иногда ответ, необходимый для конкретного запроса настолько прост, что создание нового представления было бы излишним. В этом случае нет никакой необходимости создавать файл и класс "вида" - всё можно запхать в контроллер.
Генерация JSON ответа
PHP имеет встроенные функции для кодирования и декодирования JSON данных. Вы можете кодировать данные, используя json_encode функции, например:
<?php // Получаем данные для ответа: $data = array( 'some data' ); // Отсылаем "клиенту" данные в JSON - формате: echo json_encode( $data );
Функция Json_encode может кодировать почти все типы данных, такие как строки, массивы и объекты, хотя, нужно иметь в виду, что json_decode функция будет возвращать только объект (и, возможно, ассоциативный массив). Это есть - правильно! Тем более, что при таком раскладе удобно устанавливать правильный MIME-тип для ответа. В некоторых приложениях Вы могли бы также изменить предложенное имя файла на что-то другое чем "index.php", который Вы, вероятно, получите по умолчанию. В следующем примере предложенное имя файла изменено на имя представления с добавленным расширением ".json".
<?php // Получаем данные для ответа: $data = array( 'some data' ); // Получаем document объект. $document =& JFactory::getDocument(); // Устанавливаем MIME тип для JSON ответа. $document->setMimeEncoding( 'application/json' ); // Подменяем имя файла. JResponse::setHeader( 'Content-Disposition', 'attachment; filename="'.$view->getName().'.json"' ); // Отсылаем "клиенту" данные в JSON - формате: echo json_encode( $data );
Генерация XML ответа
Joomla поддерживает простой и достаточно эффективный класс, JSimpleXML , который может быть использован для создания XML-вывода, например, для Ajax. Однако, объектно-ориентированный XML генератор хренОв тем, что он медленный и жрётъ память, хоть JSimpleXML и представляет собой облегченную реализацию. Например, следующий код прекрасно обходится и без JSimpleXML и будет выводить XML-документ, состоящий из корневого элемента, <root> содержащего элементы <items> , которые сами содержат один или несколько элементов <item> с данными:
<?php $document =& JFactory::getDocument(); $document->setMimeEncoding( 'text/xml' ); // Выводим XML декларацию. echo '<?xml version="1.0" encoding="UTF-8" ?>' . "\n"; // Выводим корневой - root элемент. echo '<root>' . "\n"; // Выводим данные. echo "\t" . '<items>' . "\n"; if (!empty( $data )) { foreach ($data as $datum) { echo "\t\t" . '<item>' . "\n"; foreach ($datum as $key => $value) { echo "\t\t\t" . '<' . $key . '>' . htmlspecialchars( $value ) . '</' . $key . '>' . "\n"; } echo "\t\t" . '</item>' . "\n"; } } echo "\t" . '</items>' . "\n"; // Закрываем корневой - root элемент. echo '</root>' . "\n";
Обратите внимание, что данные должны быть экранированы с помощью htmlspecialchars, чтобы обезопасить HTML символы. Также, в этом примере была предпринята попытка привести "вид для печати" в божеский вид путём применения табов и возвратов каретки. Это не является обязательным, и эти дополнительные символы могут быть удалены.
Основные этапы регистрации онлайн кассы в фнс
Сроки и основные этапы регистрации онлайн кассы в фнс.
f-service.su