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

05.06.17

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
OneScript и Ajax. Создание GET-запроса.:
.zip 174,01Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

В библиотеке 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-запрос

См. также

OneScript Программист Бесплатно (free)

Отгремел Infostart Tech Event 2024, топовое событие в мире 1С-разработки, традиционно проходящее в Санкт-Петербурге. Ваш покорный слуга в этот раз отмечал там 10-летний юбилей проекта OneScript. Отмечание проводилось в форме игры-соревнования по забегу роботов в лабиринте. Участники пытались написать алгоритм движения робота на языке 1С и сделать это быстрее других. О том, как это было – под катом.

28.10.2024    1402    Evil Beaver    11    

24

OneScript Программист Бесплатно (free)

OneScript – это скриптовый движок для автоматизации всего и вся. О том, как OneScript помогает в разработке скриптов на языке 1С, пойдет речь в статье.

10.10.2024    2343    ardn    1    

7

Инструментарий разработчика OneScript Программист Руководитель проекта Бесплатно (free)

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

23.09.2024    611    0    stopa85    4    

5

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

Скрипт для работы с SonarQube и локальным репозиторием Git.<br> Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.<br> https://github.com/vkrivov/go/

02.07.2024    3512    vkrivov@yandex.ru    8    

19

DevOps и автоматизация разработки OneScript Системный администратор Программист Стажер Бесплатно (free)

Рассмотрим создание самоформирующейся документации через комментарии и соглашения: как это сделать и зачем, с описанием полного цикла от исходников конфигурации до странички в интернете

17.06.2024    5215    bayselonarrend    5    

61

OneScript Программист Стажер Бесплатно (free)

Поговорим про меню, спиннеры, прогресс-бары и прочие свистелки для CLI приложений на OneScript

20.05.2024    2906    bayselonarrend    18    

70

Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Бесплатно (free)

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

25.03.2024    2627    bayselonarrend    3    

42

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

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

17.01.2024    5430    kamisov    23    

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