logo

NJP

GlideAJAX that can be used by client scripts and replace existing use of GlideRecord from Client script

Import · Apr 13, 2020 · article

I see lot of users are using GlideRecord in client script (Which is not recommended and it will not work on Service Portal) so you can stop using GlideRecord in client script and replace with GlideAJAX. Example below, you can add fields based on your requirement.

Create Script Includes;

Name: commonUtils

Client callable: true (checked)

Script:

var commonUtils = Class.create();
commonUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getUserInfo: function(){
        var user = this.getParameter('sysparm_user');
        var gr = new GlideRecord("sys_user");
        gr.get(user);

        var deptname = gr.department.getDisplayValue();
        var dept = gr.getValue('department');
        var manager = gr.getValue('manager');
        var managername = gr.manager.getDisplayValue();
        var location = gr.getValue('location');
        var locationname = gr.location.getDisplayValue();

        var response = {};
        response.deptname = deptname;
        response.dept = dept;
        response.manager = manager;
        response.managername = managername;
        response.location = location;
        response.locationname = locationname;

        return JSON.stringify(response);
    },

    type: 'commonUtils'
});

Client Script:

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    // Call the GA function
    var ga = new GlideAjax('commonUtils');
    ga.addParam('sysparm_name', "getUserInfo");
    ga.addParam('sysparm_user', newValue); //Onchange field is reference field to sys_user table
    ga.getXMLAnswer(function(answer){
        var response = JSON.parse(answer);

        g_form.setValue('department_name', response.deptname); //used for string field
        g_form.setValue('department', response.dept); //used for reference field to department table

        g_form.setValue('manager_name', response.managername); //used for string field
        g_form.setValue('manager', response.manager); //used for reference field to user table

        g_form.setValue('location_name', response.locationname); //used for string field
        g_form.setValue('location', response.location); //used for reference field to location table

    });
}
View original source

https://www.servicenow.com/community/developer-articles/glideajax-that-can-be-used-by-client-scripts-and-replace/ta-p/2304681