GlideAjax on Servicenow Portal

charanpreet
Kilo Expert

Requirement : On Change of 'Requested for' variable for the catalog item , the variables value for location and manager should change according to 'Requested For'.

I have implemented OnChange client script and called script include , it is working fine on the instance.

But the script is not working on ServiceNow portal.

5 REPLIES 5

Kannan Nadar
Tera Guru

Hi Charan,



Is your script include client callable? Can you also provide both the scripts?



Thanks,


Kannan


Jaspal Singh
Mega Patron
Mega Patron

Hi Charanpreet,



Could you kindly check if you have UI type set as both.



find_real_file.png


Hi,



Synchronous calls do not work on service portal. Try using getXML() instead of getXMLWait() in the client script.


Client Script : UI Type : All



var user_sys_id = g_form.getValue('requested_for');


var user_sys_id = g_user.userID;


  if(user_sys_id)


  {


  var userinfo = new GlideAjax("ABC_UserInfo");


  userinfo.addParam("sysparm_name", "getUserInfo");


  userinfo.addParam("sysparm_userId",user_sys_id);


  userinfo.getXML(userData);


  }


  function userData(serverResponse)


  {


  var answer = serverResponse.responseXML.documentElement.getAttribute("answer");



  answer = answer.evalJSON();



  g_form.setValue('emp_id',answer.emp_id);


  g_form.setValue('location',answer.location);


  g_form.setValue('cost_center', answer.cost_center);


  g_form.setValue('manager',answer.manager);


}



Script Include : Client Callable : true


var ABC_UserInfo = Class.create();


ABC_UserInfo.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getUserInfo:function(){


  var obj = {};


  var userId = this.getParameter('sysparm_userId');


  var gr = new GlideRecord('sys_user');


  gr.addQuery('sys_id',userId);


  gr.query();


  if(gr.next())


  {


  obj.emp_id = gr.employee_number.getDisplayValue();


  obj.cost_center = gr.cost_center.getDisplayValue();


  //obj.vendor =


  obj.location = gr.location.getDisplayValue();


  obj.manager= gr.manager.getDisplayValue();


  // obj.start_date =


  // obj.end_date =


  var json = new JSON();


        var answer = json.encode(obj);




  return answer;


  }




},


      type: 'ABC_UserInfo'


});