logo

NJP

ServiceNow GlideAjax: 4 approaches (single value, multiple values)

Import · Feb 09, 2023 · article
  • single return value
  • multi return values
  • multi return values using ARRAY object
  • multi return values using JSON object

CLIENT SCRIPT

//--uncomment just one of below to test

var ga = new GlideAjax('rds_testajax');

ga.addParam('sysparm_name', 'getUserDetails_singleVal');

ga.getXMLAnswer(function(answer) {

alert('AJAX SINGLE VAL return: ' + answer);

var ga2 = new GlideAjax('rds_testajax');

ga2.addParam('sysparm_name', 'getUserDetails_multiVals');

ga2.getXML(function(serverResponse) {

var result = serverResponse.responseXML.getElementsByTagName("result");

var message = result[0].getAttribute("message");

//--get favorite elements

var favorites = serverResponse.responseXML.getElementsByTagName("favorite");

for (var i = 0; i < favorites.length; i++) {

var name = favorites[i].getAttribute("name");

var value = favorites[i].getAttribute("value");

alert(name + ': ' + value);

var ga3 = new GlideAjax('rds_testajax');

ga3.addParam('sysparm_name', 'getUserDetails_array');

ga3.getXML(function processdata(response) {

var answer = response.responseXML.documentElement.getAttribute("answer");

answer = JSON.parse(answer);

alert('EMAIL: ' + answer.email);

alert('DEPT: ' + answer.displayDepartment);

alert('NAME: ' + answer.name);

var ga3 = new GlideAjax('rds_testajax');

ga3.addParam('sysparm_name', 'getUserDetails_JSONobj');

ga3.getXML(function processdata(response) {

var answer = response.responseXML.documentElement.getAttribute("answer");

var json_res = JSON.parse(answer);

alert('EMAIL: ' + json_res.email);

alert('NAME: ' + json_res.name);

SCRIPT INCLUDE (client=true)

var rds_testajax = Class.create();

rds_testajax.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getUserDetails_singleVal: function() {

var caller = gs.getUserID();

var returnUserObj = {}; // Declaring an object

var userRec = new GlideRecord('sys_user');

userRec.addQuery('sys_id', caller);

returnVal = userRec.getValue('email');

getUserDetails_multiVals: function() {

var result = this.newItem("result");

result.setAttribute("message", "returning all favorites");

var caller = gs.getUserID();

var returnUserObj = {}; // Declaring an object

var userRec = new GlideRecord('sys_user');

userRec.addQuery('sys_id', caller);

this._addFavorite('email', userRec.getValue('email'));

this._addFavorite('name', userRec.getValue('name'));

this._addFavorite('first_name', userRec.getValue('first_name'));

this._addFavorite('last_name', userRec.getValue('last_name'));

_addFavorite: function(name, value) {

var favs = this.newItem("favorite");

favs.setAttribute("name", name);

favs.setAttribute("value", value);

getUserDetails_array: function() {

var caller = gs.getUserID();

var returnUserObj = {}; // Declaring an object

var userRec = new GlideRecord('sys_user');

userRec.addQuery('sys_id', caller);

returnUserObj.name = userRec.getValue('name');

returnUserObj.firstName = userRec.getValue('first_name');

returnUserObj.lastName = userRec.getValue('last_name');

returnUserObj.email = userRec.getValue('email'); // Adding properties

returnUserObj.displayEmail = userRec.getDisplayValue('email');

returnUserObj.phone = userRec.getValue('phone'); // Adding properties

returnUserObj.displayPhone = userRec.getDisplayValue('phone');

returnUserObj.department = userRec.getValue('department');

returnUserObj.displayDepartment = userRec.getDisplayValue('department');

returnUserObj.costCenter = userRec.getValue('cost_center');

returnUserObj.displayCostCenter = userRec.getDisplayValue('cost_center');

returnUserObj.manager = userRec.getValue('manager');

returnUserObj.displayManager = userRec.getDisplayValue('manager');

returnUserObj.location = userRec.getValue('location');

returnUserObj.displayLocation = userRec.getDisplayValue('location');

returnUserObj.vip = userRec.getValue('vip');

return (JSON.stringify(returnUserObj));

getUserDetails_JSONobj: function() {

var caller = gs.getUserID();

var returnUserObj = {}; // Declaring an object

var userRec = new GlideRecord('sys_user');

userRec.addQuery('sys_id', caller);

oResult.email = userRec.getValue("email");

oResult.name = userRec.getValue("name");

return (JSON.stringify(oResult));

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g. var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ()) option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }

Call a script include to apply a reference qualifier on a catalog item variable: - variable reference qualifier dependent on another variable selection, in this case a variable referencing sys_user (requested_for) On the catalog item form. variable name to apply ref qual filter : retail_equipment variable reference qualifier (on cmdb table ): javascript : new refqual_functions (). lostStolen_getAssignedCIs (); client-callable script include ( refqual_functions) function : lostStolen_getAssignedCIs : function (){ //--called from variable set client script, for lost/stolen request (service catalog) gs . log ( current . variables . requested_for , 'retail_lostStolen_getAssignedCIs' ); return ( 'install_statusNOT IN8,7owned_by=' + current . variables . requested_for ); //owned_by=1269b79937f1060041c5616043990e41install_statusNOT IN8,7 },

View original source

http://www.cloudminus89.com/2023/02/servicenow-glideajax-3-approaches.html