OneScript и Ajax. Создание GET-запроса

05.06.17

Разработка - OneScript

Создание GET-запроса на OneScript с помощью библиотеки UfaScript.osb. Описание шаблона OneScript.zip для Joomla. Главный файл шаблона Index.php генерируется функциями из библиотеки UfaScript.osb.

Скачать исходный код

Наименование Файл Версия Размер
OneScript и Ajax. Создание GET-запроса.:
.zip 174,01Kb
0
.zip 174,01Kb Скачать

В библиотеке UfaScript.osb имеется процедура для организации Ajax-запросов к серверу со стороны клиента. Такой запрос может использоваться и в шаблоне OneScript созданном для Joomla. Внутри шаблона имеется файл AjaxGET.os, в котором приведен пример организации Get-запроса к серверу. Этот же пример можно использовать и вне системы Joomla, но наличие хотя бы локального хостинга обязательно.

Шаблон OneScript.zip содержится на GitHub по адресу: https://github.com/andreosh/UfaScript

Данный шаблон может быть подключен к Joomla через установку шаблонов либо просто разархивирован из Zip-архива в каталог вашего веб-сервера, если вы хотите посмотреть пример без установки Joomla. В каталоге шаблона имеется файл AjaxGET.os с комментариями по его работе. После запуска файла AjaxGET.os командой ”oscript AjaxGET.os” (OneScript должен быть уже установлен) будет сформирован файл Index.php в данном каталоге. Если в Joomla данный шаблон установить, как основной, то вы запустите пример GET-запроса. 

Сам текст данного примера содержится в файле AjaxGET.os. Внутри которого следующий текст:

// Пример GET-запроса к серверу методом Ajax
Перем U;
U = ЗагрузитьСценарий("UfaScript.osb");
U.БазовыеУстановкиСистемыUfaScript();

// Формируем программу на стороне сервера для обработки Ajax-запросов.
// "..\..\Server.php" — двоеточия означают, что файл будет размещен в корневом каталоге
// Joomla. Если пример запускается вне системы Joomla, то следует писать "Server.php"
Запись = Новый ЗаписьТекста; Запись.Открыть("..\..\Server.php");
Запись.ЗаписатьСтроку("<?php echo ""Данные: a1 - "".$_GET['a1']."", a2 - "".$_GET['a2']; ?>");
Запись.Закрыть();

// Формируем Index.php (сторона клиента)
// Если пример запускается вне системы Joomla, то следует писать
// U.ПРОЦЕСС_Начало(“Index.php”);
U.ПРОЦЕСС_НачалоДляJoomla();

Консоль=U.СоздатьОбъектHTMLКонсоль("01"); Консоль.Ширина=500; Консоль.Высота=200;
Консоль.CSS();
U.Запись.ЗаписатьСтроку("</style>");

U.Запись.ЗаписатьСтроку("<Title>Заголовок для страницы</Title>");

// Если пример запускается вне системы Joomla, то следует писать U.ПРОЦЕСС_Центр();
U.ПРОЦЕСС_ЦентрДляJoomla();

Консоль.HTML();

// При нажатии этой ссылки функция print_console выведет переданный текст в консоль
U.Запись.ЗаписатьСтроку(U.Строка_HTMLСсылкаНаJSФункцию("print_console('<br/>Тест функции print_console, которая создана функцией U.СтрокаAjaxJS_ФункцияВыводаВКонсоль(Консоль.ИмяОбъекта)')", "Распечатать<br>"));

// Будет создана ссылка, при нажатии по которой запустится функция startAjax()
U.Запись.ЗаписатьСтроку(U.Строка_HTMLСсылкаНаJSФункцию("AjaxGET('Server.php?a1=1&a2=2')","Нажмите для запуска функции JS"));

// Этой командой будет создана функция print_console(), которая будет выводить текст в объект с именем Консоль.ИмяОбъекта
U.Запись.ЗаписатьСтроку(U.СтрокаAjaxJS_ФункцияВыводаВКонсоль("print_console",Консоль.ИмяОбъекта));

// Установка функции GET-запроса AjaxGET по технологии Ajax
Error404="alert('Ошибка: запрашиваемый скрипт не найден!');";
State1="print_console('<br/><em>1: Подготовка к отправке...</em>');"; // Передача вторым параметром массива в
State2="print_console('<br/><em>2: Отправлен...</em>');"; // процедуру AjaxJS_ИнициализироватьAjaxGET
State3="print_console('<br/><em>3: Идет обмен..</em>');"; // является необязательным.
State4="alert(""Ошибка: сервер вернул статус: ""+ request1.status);";

// Функции обработки ответа от сервера на стороне клиента
ОбработкаОтвета="print_console('<br/><em>4: Обмен завершен.</em><br/>'); print_console('На сервер передали: Server.php?a1=1&a2=2'); "+
"document.getElementById(""printResult"").innerHTML = ""<b>""+request1.responseText+""</b>""; ";

М = Новый Массив; М.Добавить(Error404); М.Добавить(State1); М.Добавить(State2); М.Добавить(State3); М.Добавить(State4);
U.AjaxJS_ИнициализироватьAjaxGET(ОбработкаОтвета,М);

// Создаем область для вывода ответа от сервера
U.Запись.ЗаписатьСтроку("<div></div>Сервер передал ответ:<br/>"+
"<div id=""printResult"">После нажатия на ссылку =Нажмите для запуска функции JS=, тут будет сообщение с сервера!</div>");

U.ПРОЦЕСС_Окончание();

Командой Запись.Открыть("..\..\Server.php"); мы начинаем создание файла на стороне сервера, который будет отвечать на запросы нашего клиента. Двоеточия используются, чтоб файл создавался в корневом каталоге Joomla. Если вы не используете Joomla, то двоеточия и косые черточки следует удалить, чтоб файл создавался в текущем каталоге.

Командой Консоль=U.СоздатьОбъектHTMLКонсоль("01"); мы создаем консоль для вывода информационных сообщений. Затем задаем ширину и высоту консоли, переопределяя соответствующие свойства объекта «Консоль». Тег "01" задает уникальное имя объекту (имя будет таким «Console01»). Если мы создавали несколько консолей, то каждому бы присваивали уникальный тег.

Командой Консоль.CSS(); будет записан CSS-код для данной консоли в файл index.php.

Командой U.Запись.ЗаписатьСтроку("</style>"); закрываем область определения стилей CSS.

Команда U.ПРОЦЕСС_ЦентрДляJoomla(); дописывает стандартные строки до вставки HTML-кода. Если вы не используете Joomla, то следует писать команду U.ПРОЦЕСС_Центр();

Команда Консоль.HTML(); запишет в Index.php HTML-код для высвечивания на экране в браузере объекта Консоль.

Далее следуют команды для формирования двух ссылочных строк («Распечатать» и «Нажмите для запуска функции JS»). При нажатии на первую ссылку будет запущена функция print_console, которая выводит заданный текст в консоль. При нажатии второй ссылки запустится функция AjaxGET('Server.php?a1=1&a2=2'); которая передаст GET-запрос серверу. На сервере запуститься программа в файле Server.php, которая вернет строку. Возвращаемая строка от сервера будет принята PHP-кодом, созданным в строке ОбработкаОтвета (см.далее). Текст возвращенной строки берется из request1.responseText и направляется для отображения в div-Элемент с id=”printResult”. document.getElementById(""printResult"").innerHTML= ""<b>""+request1.responseText +""</b>"";

Записываемая строка U.СтрокаAjaxJS_ФункцияВыводаВКонсоль("print_console",Консоль.ИмяОбъекта) создает PHP-функцию с именем print_console, которая будет выводить заданную информацию в объект с именем Консоль.ИмяОбъекта.

Команда U.AjaxJS_ИнициализироватьAjaxGET(ОбработкаОтвета,М); создаст PHP- функцию, которая будет посылать заданный GET-запрос серверу и запускать код, записанный в строке ОбработкаОтвета (callback-функция) при получении ответа от сервера. При этом второй параметр (М-строковый массив) не обязателен. Использование массива позволяет перехватывать и, например, отображать клиенту события, возникающие в процессе обработки GET-запроса. 1-ое событие возникает при подготовке к отправке запроса, 2-ое — после отправке, 3-ие — ожидание пока сервер сформирует ответ. Когда ответ будет получен запустится событие ОбработкаОтвета. Если возникнет ошибка 404, то запустится код в строке Error404, а если другая ошибка, то запустится код из строки State4.

После того, как вы нажмете ссылку "Нажмите для запуска функции JS", то GET-запрос отработает и на экране высветится информация об этапах отработки GET-запроса (1: Подготовка к отправке… и т. д.), будет получен ответ от сервера в виде строки «Данные: a1 – 1, a2 – 2».

Таким образом, на простом примере мы продемонстрировали работу GET-запроса с использованием Ajax. При этом мы не использовали JQuery или подобные библиотеки.

Данный пример представлен так же на моем канале Youtube Андрей Ош.  https://youtu.be/cUzwuLl1A4A

Joomla OneScript 1Script Ajax Get-запрос

См. также

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1568    bayselonarrend    3    

38

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3008    kamisov    17    

60

Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript

OneScript Бесплатно (free)

Думаете, на OneScript неудобно создавать сложные инфраструктурные приложения? Ошибаетесь. Благодаря фреймворку ОСень за последний год экосистема библиотек, упрощающих написание собственных приложений, существенно выросла. Расскажем о самых передовых технологиях OneScript. Спойлер: будет много рефлексии, мета-аннотаций, желудей, напильников и дубов с завязями.

21.11.2023    3262    NikitaIvanchenko    16    

46

Библиотека создания клиент-серверных приложений для сценарного языка OneScript

Инструментарий разработчика Работа с интерфейсом OneScript Россия Бесплатно (free)

Представленная библиотека позволяет создать многопоточный TCP сервер, к которому может одновременно подключиться множество TCP клиентов с удаленных компьютеров. Эти клиенты могут вызывать методы скриптов как на сервере, так и на других клиентах. Методы будут выполнены в контексте скрипта на удаленной машине. Возможна передача параметров в метод и получение результата. Для TCP клиента можно создать графический интерфейс с большим набором элементов управления, модальными диалоговыми окнами и с обработкой событий.

31.07.2023    2067    ahyahy    8    

32

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    3807    ardn    3    

27

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    8164    kamisov    57    

95

OneScript на страже порядка на сервере тестовых баз данных

Администрирование СУБД OneScript Бесплатно (free)

Наводим порядок на сервере тестовых баз с помощью любимого инструмента - OneScript. Находим заброшенные базы на сервере MS SQL, определяем кандидатов на удаление.

14.06.2022    4324    ardn    23    

39

Идем в Serverless с кодом 1С

Облачные сервисы, хостинг OneScript Россия Абонемент ($m)

Запускаем код OneScript в Serverless Container Яндекса.

1 стартмани

29.04.2022    3745    1    papami    2    

9
Оставьте свое сообщение