Перейти к основному содержимому
Версия: 1.21.3

SimpleAjax

Данный класс позволяет клиентскому скрипту выполнять серверный код, используя Внешний скрипт.

Для того чтобы использовать класс SimpleAjax, выполните следующие шаги:

  1. Вызовите конструктор SimpleAjax, чтобы создать экземпляр SimpleAjax. В качестве аргумента передайте в конструктор название внешнего скрипта, который включает в себя класс с необходимыми методами.
  2. Вызовите метод addParam(paramName, paramValue). В качестве обязательного вызова передайте в него параметры, определяющие требуемый метод. Для этого выполните следующие шаги:
  • задайте параметр sysparm_name,
  • и название метода из определенного в вызываемом Внешнем скрипте класса. Вызывайте этот метод необходимое количество раз, чтобы передать другие параметры в используемый внешний скрипт.
  1. Вызовите метод getXML(callback), чтобы выполнить описанный выше метод.
внимание

Название класса, определенного в записи Внешний скрипт, должно совпадать с названием внешнего скрипта.

Для возможности вызова внешнего скрипта в клиентских скриптах, активируйте атрибут Доступно для клиентского API.

Подробнее читайте в статье Внешние скрипты.

addParam( paramName, paramValue)


Используйте метод, чтобы передать указанное имя и значение параметра серверной функции, которая связана с текущим объектом SimpleAjax. Метод addParam() можно использовать несколько раз, передавая различные параметры и их значения.

внимание

На стороне сервера скрипт выполняется только после вызова метода getXML() в клиентском скрипте.

Название параметра должно начинаться с префикса sysparm_. Не используйте предопределенное имя параметра sysparm_name для передачи значения параметру функции.

Параметры:

НаименованиеТипОбязательноЗначение по умолчанию
paramNameStringДаНет
paramValueStringДаНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

addParam()
const sAjax = new SimpleAjax('DurationCalculator'); // Вызов внешнего скрипта
sAjax.addParam('sysparm_name', 'getDuration'); // Вызов метода класса
sAjax.addParam('sysparm_start', s_form.getValue('start')); // Передать параметр
sAjax.getXML(callback);

function callback(response) {
const answer = response.responseXML.documentElement.getAttribute('answer');
console.log(answer);
}

getXML(callback)


Используйте метод, чтобы при его вызове клиентский скрипт отправлял запрос на сервер, где выполняется метод текущего объекта SimpleAjax с переданными в него параметрами. Запрос выполняется асинхронно. Результат выполнения серверного метода будет передан в указанную функцию callback.

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

getXML()
const sAjax = new SimpleAjax('DurationCalculator'); // Вызов внешнего скрипта
sAjax.addParam('sysparm_name', 'getDuration'); // Вызвать параметр метода
sAjax.addParam('sysparm_start', s_form.getValue('start')); // передать параметр
sAjax.getXML(callback);

function callback(response) {
const answer = response.responseXML.documentElement.getAttribute('answer');
console.log(answer);
}

runScript(scriptValue, tableName, callback)


Используйте этот метод для запуска скрипта на заданной таблице. Скрипт выполняется с учетом ограничений правил контроля доступа (ACL).

примечание

Результат выполнения скрипта будет передан в указанную функцию callback.

Параметры:

НаименованиеТипОбязательноЗначение по умолчанию
scriptValueStringДаНет
tableName
Этот параметр используется для отображения информации и результатов выполнения скрипта на некоторых страницах, таких как record/sys_script.
StringНетНет
callbackFunctionНетНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

runScript()
const CURRENT_ID = s_form.getUniqueValue();

const simpleAjax = new SimpleAjax();
await simpleAjax.runScript(
`const current = new SimpleRecord('task');
current.get('${CURRENT_ID}');
setResult(current.caller.email)`,
null,
(response) => {
console.log(response.data.result);
}
)

runAdminScript(scriptValue, tableName, callback)


Пользователи с ролью администратора могут использовать этот метод для запуска скрипта. Ограничения правил контроля доступа (ACL) не распространяются на скрипт. При попытке запуска скрипта пользователем, который не является администратором, метод передаст в функцию callback пустое значение. Таким образом, перед использованием результата скрипта убедитесь в том, что response.data.result имеет значение.

примечание

Результат выполнения скрипта будет передан в указанную функцию callback.

Параметры:

НаименованиеТипОбязательноЗначение по умолчанию
scriptValueStringДаНет
tableName
Этот параметр используется для отображения информации и результатов выполнения скрипта на некоторых страницах, таких как record/sys_script.
StringНетНет
callbackFunctionНетНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

runAdminScript()
const simpleAjax = new SimpleAjax();
await simpleAjax.runAdminScript(
`const supportSiteURL = ss.getProperty('simple.auth_page.support_site');
setResult(supportSiteURL)`,
null,
(response) => {
const serverData = response.data.result;
console.log(serverData);
}
)