- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2016 07:33 AM
HI All,
I am trying to auto-populate variables by using ajax,
Here if I select the Requestor the Manager,MobileNo,Email Id has to auto populate from user table.
can any one help with by using Script Include and Ajax.
Regards,
Vardhini.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2016 08:26 AM
Here you go.
onChange client script on requestor field:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading) {
return;
}
if(newValue === ''){
g_form.setValue('<manager variable name>','');
g_form.setValue('<mobile number variable name>','');
g_form.setValue('<email id variable name','');
}
var ga = new GlideAjax('GetUserDetails');
ga.addParam('sysparm_name','getDetails');
ga.addParam('sysparm_user_id',newValue);
ga.getXML(CallBack);
function CallBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = answer.evalJSON(); //Transform the JSON string to an object
g_form.setValue('<manager variable name>',answer.manager);
g_form.setValue('<mobile number variable name>',answer.number);
g_form.setValue('<email id variable name',answer.email);
}
}
Script Include:
Name: GetUserDetails
Client callable: true
Script:
var GetUserDetails = Class.create();
GetUserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function(){
var obj = {};
var usr= new GlideRecord('sys_user');
usr.get(this.getParameter('sysparm_user_id'));
obj.manager = usr.getValue('manager');
obj.email = usr.getValue('email');
obj.number=usr.getValue('mobile_phone');
var json = new JSON();
var data = json.encode(obj);//JSON formatted string
return data;
},
type: 'GetUserDetails'
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2016 08:26 AM
Here you go.
onChange client script on requestor field:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading) {
return;
}
if(newValue === ''){
g_form.setValue('<manager variable name>','');
g_form.setValue('<mobile number variable name>','');
g_form.setValue('<email id variable name','');
}
var ga = new GlideAjax('GetUserDetails');
ga.addParam('sysparm_name','getDetails');
ga.addParam('sysparm_user_id',newValue);
ga.getXML(CallBack);
function CallBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = answer.evalJSON(); //Transform the JSON string to an object
g_form.setValue('<manager variable name>',answer.manager);
g_form.setValue('<mobile number variable name>',answer.number);
g_form.setValue('<email id variable name',answer.email);
}
}
Script Include:
Name: GetUserDetails
Client callable: true
Script:
var GetUserDetails = Class.create();
GetUserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function(){
var obj = {};
var usr= new GlideRecord('sys_user');
usr.get(this.getParameter('sysparm_user_id'));
obj.manager = usr.getValue('manager');
obj.email = usr.getValue('email');
obj.number=usr.getValue('mobile_phone');
var json = new JSON();
var data = json.encode(obj);//JSON formatted string
return data;
},
type: 'GetUserDetails'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-03-2023 09:24 AM
The "new" right way to do this is to use the "Auto-populate" functionality available since Utah release.
In your variable form, you have a tab "Auto-populate" with 3 fields:
Dependent question : Choose the reference variable (in your case "Requestor")
Reference : filled automatically with the related table (in your case, sys_user)
Dot walk path : Choose the field that contains the value you want to populate (in your case, Requestor.Email)
More information here.
No need to script anymore 😉
If usefull, please mark as helpful.