How to auto-populate Mobile number and Email Id after selecting the User in catalog Item..?

vardhini
Kilo Expert

HI All,

I am trying to auto-populate variables by using ajax,

find_real_file.png

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.

1 ACCEPTED SOLUTION

Abhinay Erra
Giga Sage

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'


});


View solution in original post

2 REPLIES 2

Abhinay Erra
Giga Sage

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'


});


christophenow
Tera Expert

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.

https://www.servicenow.com/community/developer-articles/auto-populate-a-variable-based-on-a-referenc...

 

No need to script anymore 😉

 

If usefull, please mark as helpful.