- 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
07-31-2020 02:06 PM
Thank you Muhammad.
The field are still not getting populated.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2020 07:44 AM
Hi Maxwell,
If your assignment_group is reference to group table then query should be
('sys_id', group)
Did you check what is coming in the json in answer?
Also are the field names proper which you are trying to set?
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 != ''){
alert(answer); // if this is giving you correct json string then check fields
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-03-2020 03:50 PM
Hello Ankur,
For the JSON(answer) I am getting a "null". In the alert pop up window.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-03-2020 04:02 PM
Hello Ankur,
Correction.
I am getting the field names in my JSON answer. Below is what I get from the alert pop up window. I think the Query is just returning the field names but not the value of the fields. What are your thoughts on this?
{"u_field1":{},"u_field2":{},"u_field3":{}}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-03-2020 10:07 PM
Hi Maxwell,
it means either the values for those fields are empty or the field is incorrect
Please check for the group selected the 3 fields are having values or not.
If it has value then your script should work fine.
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader