- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-31-2020 10:12 AM
Hello all,
I am trying to convert this client script into a Glide Ajax call. This is located on this incident table and the incident form is taking a long time to load when updating the fields. I think a Glide Ajax call to a Script Include might help.
Here is the Client Script below.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading)
return;
//make work notes mandatory as appropriate
if(newValue == oldValue)
g_form.setMandatory('work_notes', false);
else
g_form.setMandatory('work_notes', true);
//clear dependent values
g_form.setValue('assigned_to', null);
g_form.setValue('u_field3', null);
g_form.setValue('u_field2', null);
g_form.setValue('u_field1', null);
//repopulate dependent values
var group = g_form.getReference('assignment_group', setQueue);
}
function setQueue(group) {
if (group)
{
g_form.setValue('u_field1', group.u_field1);
g_form.setValue('u_field2', group.u_field2);
g_form.setValue('u_field3', group.u_field3);
}
}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-31-2020 10:35 AM
Hi Maxwell,
That's correct using GlideAjax is better than using getReference with callback in terms of performance
Script Include: it should be client callable
var checkRecords = Class.create();
checkRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkRecordPresent: function(){
var obj = {};
var group = this.getParameter('sysparm_group');
var groupRec = new GlideRecord('sys_user_group');
groupRec.addQuery('sys_id', group);
groupRec.query();
if(groupRec.next()){
obj['u_field1'] = groupRec.u_field1;
obj['u_field2'] = groupRec.u_field2;
obj['u_field3'] = groupRec.u_field3;
}
return JSON.stringify(obj);
},
type: 'checkRecords'
});
Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading)
return;
//make work notes mandatory as appropriate
if(newValue == oldValue)
g_form.setMandatory('work_notes', false);
else
g_form.setMandatory('work_notes', true);
//clear dependent values
g_form.setValue('assigned_to', null);
g_form.setValue('u_field3', null);
g_form.setValue('u_field2', null);
g_form.setValue('u_field1', null);
var ga = new GlideAjax('checkRecords');
ga.addParam('sysparm_name', "checkRecordPresent");
ga.addParam('sysparm_group', g_form.getValue('assignment_group'));
ga.getXMLAnswer(function(answer){
if(answer != ''){
var answerObj = JSON.parse(answer);
g_form.setValue('u_field1', answerObj.u_field1);
g_form.setValue('u_field2', answerObj.u_field2);
g_form.setValue('u_field3', answerObj.u_field3);
}
});
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-19-2020 11:12 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2020 12:13 AM
Hi Maxwell,
please check if those are the sys_ids then those are valid i.e. belonging to the valid table
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2020 11:32 AM
Hello Ankur,
Thank you for your quick reply. I found a solution. I changed .getDisplayValue() to .getValue(). It works now.