Запрос GlideAjax не возвращает ответа - PullRequest
0 голосов
/ 25 февраля 2019

Я новичок в разработке сервисов.Я пытаюсь создать пакет "Script Include" - "Client Script".Используя фоновый скрипт, я вижу, что мой скрипт включается нормально.Но когда я пытаюсь вызвать это включение через клиентский скрипт, он не возвращает никакого ответа.

Вот мой метод в скрипте:

usersCounter: function () {
        var gr = new GlideRecord('sys_user');
        gr.query();
        var users = gr.getRowCount();
        gs.info('Number of users'+ ' ' + users);
        return users;

А вот мой клиентский скрипт:

var ga = new GlideAjax('SCI_Training_ScriptIncludeOnChange');
       ga.addParam('sysparm_name', 'usersCounter');
       ga.getXML(getUsers);

       function getUsers(response)  {
           var numberOfUsers = response.responseXML.documentElement.getAttribute("answer");
           g_form.clearValue('description');
           console.log(numberOfUsers);

А у меня в консоли ноль.

Что я пропустил?

1 Ответ

0 голосов
/ 28 февраля 2019

Независимо от того, почему это не работает, вы, вероятно, захотите изменить GlideRecord на стороне сервера, чтобы вместо него использовать GlideAggregate, и просто позволить mysql вернуть счетчик строк:

var gr = new GlideAggregate('sys_user');
gr.addAggregate('COUNT');
gr.query();
gr.next();
var users = gr.getAggregate('COUNT');
gs.info('Number of users'+ ' ' + users);
return users;

Выполнение запроса GlideRecord # без указания гдеПо сути, предложение выполняет «SELECT * FROM sys_user», перенося все данные, когда все, что вы запрашиваете, - это количество строк из метаданных в наборе результатов.

Помимо этого, убедитесь, что ваш скриптВключить правильно расширяет AbstractAjaxProcessor и имеет для поля client-callable значение true для этого: https://docs.servicenow.com/bundle/geneva-servicenow-platform/page/script/server_scripting/reference/r_ExamplesOfAsynchronousGlideAjax.html

...