- 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:37 AM
Hi Vijay,
Can you use below in script include
var useris=this.getParameter('sysparm_userselect');
var gr= GlideRecord('sys_user');
gr.addQuery('sys_id',useris);
gr.query();
if(gr.next())
{
//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');
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 02:40 AM
Hi Vijay,
In getXMLAnswer it will return only one value that is anwer here you need object so replace the client script with this code.
And the userobject is not used correctly in script include
Use getXML to get the answer
Update the client script as below:
function onChange(control, oldValue, newValue, isLoading) {
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.getXML(populate) ;
function populate(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var userObj = JSON.parse(answer);
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);
}
}
And in the scirpt include you have to use the parameter value as well.
var userDetailsUtil = Class.create();
userDetailsUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var uerObj = {};
var gr= GlideRecord('sys_user');
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(userObj);
},
type: 'userDetailsUtil'
});
Mark helpful and correct if it helps
Thanks,
CB
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 02:56 AM
Perfect, Excatley what I needed
Working fine
Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2020 03:00 AM
Hi Vijay,
If it resolved you question then can you please mark my response as correct and helpful so that others can refer this solution in future.
It will move this to solved question queue.
Thanks,
CB