- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 02:32 AM
Hi All,
I have a requirement to auto populate the field values (email, mobile, manager, department) when I change the user Using script include and glide ajax
I tried the script below but not working fine
please help
Client script onchange
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var userselected = g_form.getValue('u_user');
var userdetails = new GlideAjax('global.userDetailsUtil');
userdetails.addParam('sysparm_name', 'getUserDetails');
userdetails.addParam('sysparm_userselect', userselected);
userdetails.getXMLAnswer(function(response) {
var userObj = JSON.parse(response);
g_form.setValue('u_mobile', userObj.contactNo);
g_form.setValue('u_department', userObj.department);
g_form.setValue('u_email', userObj.email);
g_form.setValue('u_manager', userObj.manager);
});
}
Script include
var userDetailsUtil = Class.create();
userDetailsUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var uerObj = {};
var gr= GlideRecord('sys_user');
if(gr.get(this.getParameter('sysparm_userselect'))){
userObj.contactNo = gr.getValue('mobile_phone');
userObj.manager = gr.getValue('manager');
userObj.email = gr.getValue('email');
userObj.department = gr.getValue('department');
}
return JSON.stringify(uerObj);
},
type: 'userDetailsUtil'
});
Solved! Go to Solution.
- Labels:
-
Problem Management

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 02:41 AM
Hi,
Use this one:
Client script:
function onLoad() {
//Type appropriate comment here, and begin script below
var getEmailaddr = new GlideAjax('HelloWorld');
getEmailaddr.addParam('sysparm_name', 'getJsonBack');
getEmailaddr.addParam('sysparm_userID', g_user.userID);
getEmailaddr.getXML(populateField);
function populateField(response) {
var obj1 = response.responseXML.documentElement.getAttribute('answer');
var userObj= JSON.parse(obj1);
g_form.setValue('u_mobile', userObj.contactNo);
g_form.setValue('u_department', userObj.department);
g_form.setValue('u_email', userObj.email);
g_form.setValue('u_manager', userObj.manager);
}
}
Script include:
var usr = this.getParameter('sysparm_userID');
var obj = {};
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', usr);
gr.query();
if (gr.next()) {
obj['contactNo']= gr.mobile_phone.toString();
obj['department'] = gr.department.toString();
obj['manager'] = gr.manager.toString();
obj['email'] = gr.email.toString();
}
var dept = JSON.stringify(obj);
return dept;
Thanks,
Ashutosh

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 02:41 AM
Hi,
Use this one:
Client script:
function onLoad() {
//Type appropriate comment here, and begin script below
var getEmailaddr = new GlideAjax('HelloWorld');
getEmailaddr.addParam('sysparm_name', 'getJsonBack');
getEmailaddr.addParam('sysparm_userID', g_user.userID);
getEmailaddr.getXML(populateField);
function populateField(response) {
var obj1 = response.responseXML.documentElement.getAttribute('answer');
var userObj= JSON.parse(obj1);
g_form.setValue('u_mobile', userObj.contactNo);
g_form.setValue('u_department', userObj.department);
g_form.setValue('u_email', userObj.email);
g_form.setValue('u_manager', userObj.manager);
}
}
Script include:
var usr = this.getParameter('sysparm_userID');
var obj = {};
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', usr);
gr.query();
if (gr.next()) {
obj['contactNo']= gr.mobile_phone.toString();
obj['department'] = gr.department.toString();
obj['manager'] = gr.manager.toString();
obj['email'] = gr.email.toString();
}
var dept = JSON.stringify(obj);
return dept;
Thanks,
Ashutosh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 03:07 AM
Hi Ashutosh
Thank you for immediate reply it's working fine
Thank you

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 02:54 AM
Just to supplement some of the other answers, you may want to consider returning display values for your reference fields.
If you don't supply a third parameter for setValue(), ServiceNow will synchronously make an additional GlideAjax call to retrieve the display value. You'll see this in the browser console logs and it is very inefficient.
Examples below:
Server-side
userObj.contactNo = gr.getValue('mobile_phone');
userObj.manager = gr.getValue('manager');
userObj.manager_display = gr.manager.getDisplayValue();
userObj.email = gr.getValue('email');
userObj.department = gr.getValue('department');
userObj.department_display = gr.department.getDisplayValue();
Client-side
g_form.setValue('u_mobile', userObj.contactNo);
g_form.setValue('u_department', userObj.department, userObj.department_display);
g_form.setValue('u_email', userObj.email);
g_form.setValue('u_manager', userObj.manager,userObj.manager_display);
ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022