- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 08:03 AM
Hello Developers,
I am trying to call a script include from an onchange client script and populate a u_Field. The script include returns a group. The client script needs to supply the cmdb_ci and the group type.
I've been attempting to use something similar to: https://community.servicenow.com/community?id=community_question&sys_id=a77707a1dbc023c09d612926ca961925&view_source=searchResult
with little luck.
Here is the script include:
var Group_and_CI = Class.create();
Group_and_CI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getallValues : function() {
var output;
var grp = this.getParameter("sysparm_grp");
var cmdb = this.getParameter("sysparm_ci");
var gr = new GlideRecord('u_m2m_groups_configuratio');
gr.addQuery('u_group', grp);
gr.addQuery('u_configuration_item', cmdb);
gr.query();
if(gr.next()) {
output += gr.sys_id+"\n";
}
return output ;
},
type: 'Group_and_CI'
});
Can someone help me with the Change client script?
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2019 12:00 PM
David, this is what works now:
Script Include:
var Group_and_CI_1 = Class.create();
Group_and_CI_1.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getallValues : function() {
var output;
var grp = this.getParameter("sysparm_grp");
var cmdb = this.getParameter("sysparm_ci");
gs.log('TESTING: grp is = ' + grp); //Added by Will
gs.log('TESTING: cmdb is = ' + cmdb); //Added by Will
var gr = new GlideRecord('u_m2m_groups_configuratio');
gr.addQuery('u_group.type', grp);
gr.addQuery('u_configuration_item', cmdb);
gr.query();
gs.log('TESTING: Result before IF is = ' + gr.output); //Added by Will
gs.log('TESTING Row Count is '+ gr.getRowCount()); //Added by Will
if(gr.next()) {
//output = gr.sys_id +" \n";
output = gr.u_group +" \n";
gs.log('TESTING: Result after IF is = ' + output); //Added by Will
}
gs.log('TESTING Result Before Output is '+ output); // Added by Will
return output ;
},
type: 'Group_and_CI_1'
});
Client:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('Group_and_CI_1');
ga.addParam('sysparm_name', 'getallValues');
ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));
ga.addParam('sysparm_grp', '1512159ddbc5a300b6e69b3c8a96195d');
ga.getXML(callback);
function callback(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
g_form.setValue('u_glide_list_areas_impacted', answer);
}
}
Client Script passed the cmdb_ci and the group type.
Results in the Group being added to the Change Request u_field.
Do you want full credit, you led me to the final, or just helpful. I'm cool either way.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 09:19 AM
just confirming here , you did not write client script ? if not then Kindly have a look on below doc link.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 09:23 AM
I need help with a client script. This is my attempt:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
// var chg_ci=g_form.getReference('cmdb_ci');
var ga = new GlideAjax('Group_and_CI');
ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));
ga.addParam('sysparm_grp', 'Release Coordinator'); // Release Coordinator '75da0d45dbcc7380b825abc5ca96196e' sys_id
//ga.getXML(getResponse);
ga.getXML(callback);
function callback(response) {
var result = response.responseXML.getElementsByTagName('result');
g_form.setValue('u_glide_list_areas_impacted', result[0].getAttribute('u_glide_list_areas_impacted'));
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 09:39 AM
try now

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 09:53 AM
Also update your callback function since you are returning a single value (sys_id) in this case.
function callback(response) {
var result = response.responseXML.getElementsByTagName('result');
g_form.setValue('u_glide_list_areas_impacted', result);
}
So your client script should be:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('Group_and_CI');
ga.addParam('sysparm_name', 'getallValues');
ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));
ga.addParam('sysparm_grp', 'Release Coordinator'); // Release Coordinator '75da0d45dbcc7380b825abc5ca96196e' sys_id
ga.getXML(callback);
function callback(response) {
var result = response.responseXML.getElementsByTagName('result');
g_form.setValue('u_glide_list_areas_impacted', result);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 10:33 AM
Harsh, your client script popped up an alert box with [object HTMLCollection]
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
// var chg_ci=g_form.getReference('cmdb_ci');
var ga = new GlideAjax('Group_and_CI');
ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));
ga.addParam('sysparm_grp', 'Release Coordinator'); // Release Coordinator '75da0d45dbcc7380b825abc5ca96196e' sys_id
//ga.getXML(getResponse);
ga.getXML(callback);
function callback(response) {
var result = response.responseXML.getElementsByTagName('result');
alert(result);
g_form.setValue('u_glide_list_areas_impacted', result[0].getAttribute('u_glide_list_areas_impacted'));
}
}