ServiceNow GlideAjax: 4 approaches (single value, multiple values)
- 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 },
http://www.cloudminus89.com/2023/02/servicenow-glideajax-3-approaches.html