- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2024 10:18 PM - edited 11-07-2024 10:27 PM
Hi
please help me with the below
glideajax call returning correct values in the log, but not setting correct value on catalog item
cost centre returning wrong value on g_form.setvalue for some users
var getRequestedDetails = Class.create();
getRequestedDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
userInfo:function(){
var result = this.newItem("result");
var req_user = this.getParameter('sysparm_user');
var user_detail = new GlideRecord('sys_user');
user_detail.addQuery('sys_id',req_user);
user_detail.query();
while(user_detail.next())
{
result.setAttribute("company",user_detail.company);
result.setAttribute("phone", user_detail.mobile_phone);
result.setAttribute("email",user_detail.email);
result.setAttribute("location",user_detail.location);
result.setAttribute("location_name",user_detail.location.name);
result.setAttribute("street",user_detail.street);
//result.setAttribute("manager",user_detail.manager);
result.setAttribute("department",user_detail.department);
result.setAttribute("dept",user_detail.department);
result.setAttribute("vip",user_detail.vip);
result.setAttribute("user_name",user_detail.user_name);
result.setAttribute("cost_centre",user_detail.cost_center);
result.setAttribute("employee_type",user_detail.u_employee_type);
result.setAttribute("id",user_detail.employee_number);
result.setAttribute("t1",user_detail.employee_number);
result.setAttribute("t2",user_detail.employee_number);
result.setAttribute("t3",user_detail.employee_number);
result.setAttribute("t4",user_detail.employee_number);
result.setAttribute("t5",user_detail.employee_number);
result.setAttribute("opslist",user_detail.u_opslist);
result.setAttribute("tcnz_bu",user_detail.u_ad_bu);
result.setAttribute("title",user_detail.title);
result.setAttribute("workspace",user_detail.u_workspace_default);
result.setAttribute("preferred_name",user_detail.u_preferred_name);
result.setAttribute("first_name",user_detail.first_name);
result.setAttribute("last_name",user_detail.last_name);
result.setAttribute("start_date",user_detail.u_start_date);
result.setAttribute("end_date",user_detail.u_end_date);
if(user_detail.manager.active == true && user_detail.manager.locked_out == false){
result.setAttribute("manager",user_detail.manager);
result.setAttribute("manager_name",user_detail.manager.name);
}
else{
result.setAttribute("manager",'');
}
}
},
//onchange client script
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
if(newValue != '')
{
var ga = new GlideAjax('getRequestedDetails');
ga.addParam("sysparm_name","userInfo");
ga.addParam("sysparm_user",newValue);
ga.getXML(ajaxResponse);
}
function ajaxResponse(serverResponse) {
var result = serverResponse.responseXML.getElementsByTagName("result");
//alert("ALL"+result);
var phone = result[0].getAttribute("phone");
var com = result[0].getAttribute("company");
var email = result[0].getAttribute("email");
var loc = result[0].getAttribute("location");
var mgr = result[0].getAttribute("manager");
var dep = result[0].getAttribute("department");
var costC = result[0].getAttribute("cost_centre");
var EmpID = result[0].getAttribute("id");
console.log("Cost Centre: " + costC);
//alert("company"+com);
g_form.setValue('phone',phone);
g_form.setValue('email',email);
g_form.setValue('company',com);
g_form.setValue('manager',mgr);
g_form.setValue('location',loc);
g_form.setValue('department',dep);
g_form.setValue('Cost_centre',costC);
g_form.setValue('id',EmpID);
}
//Type appropriate comment here, and begin script below
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2024 11:37 PM
Hi @levino ,
Alert all the value which you are trying to set using setValue(). Also check catalog field name which you are trying to set. If value come from server then it will set it as well. Only for reference field you should use setDisplayValue() if you are returning name and if you are returning sys I’d then setValue() will work.
Please accept and like the solution if it helped.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2024 11:37 PM
Hi @levino ,
Alert all the value which you are trying to set using setValue(). Also check catalog field name which you are trying to set. If value come from server then it will set it as well. Only for reference field you should use setDisplayValue() if you are returning name and if you are returning sys I’d then setValue() will work.
Please accept and like the solution if it helped.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2024 01:24 AM
@levino try below.
Script Include:
var getRequestedDetails = Class.create();
getRequestedDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
userInfo: function() {
try {
var req_user = this.getParameter('sysparm_user');
var user_detail = new GlideRecord('sys_user');
if (user_detail.get(req_user)) {
var result = {};
result.company = user_detail.company.toString();
result.phone = user_detail.mobile_phone.toString();
result.email = user_detail.email.toString();
result.location = user_detail.location.toString();
result.location_name = user_detail.location.name.toString();
result.street = user_detail.street.toString();
//result.setAttribute("manager",user_detail.manager);
result.department = user_detail.department.toString();
result.dept = user_detail.department.toString();
result.vip = user_detail.vip.toString();
result.user_name = user_detail.user_name.toString();
result.cost_centre = user_detail.cost_center.toString();
result.employee_type = user_detail.u_employee_type.toString();
result.id = user_detail.employee_number.toString();
result.t1 = user_detail.employee_number.toString();
result.t2 = user_detail.employee_number.toString();
result.t3 = user_detail.employee_number.toString();
result.t4 = user_detail.employee_number.toString();
result.t5 = user_detail.employee_number;
result.opslist = user_detail.u_opslist.toString();
result.tcnz_bu = user_detail.u_ad_bu.toString();
result.title = user_detail.title.toString();
result.workspace = user_detail.u_workspace_default.toString();
result.preferred_name = user_detail.u_preferred_name.toString();
result.first_name = user_detail.first_name.toString();
result.last_name = user_detail.last_name.toString();
result.start_date = user_detail.u_start_date.toString();
result.end_date = user_detail.u_end_date.toString();
if (user_detail.manager.active == true && user_detail.manager.locked_out == false) {
result.manager = user_detail.manager.toString();
result.manager_name = user_detail.manager.name.toString();
} else {
result.manager = "";
}
return JSON.stringify(result);
}
return null;
} catch (err) {
return null;
}
},
type: 'getRequestedDetails'
});
Client Script
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
if (newValue != '') {
var ga = new GlideAjax('getRequestedDetails');
ga.addParam("sysparm_name", "userInfo");
ga.addParam("sysparm_user", newValue);
ga.getXML(ajaxResponse);
}
function ajaxResponse(serverResponse) {
try {
var userRecord = serverResponse.responseXML.documentElement.getAttribute("answer");
if (userRecord) {
var result = JSON.parse(userRecord);
// alert("ALL:" + result);
var phone = result.phone;
var com = result.company;
var email = result.email;
var loc = result.location;
var mgr = result.tmanager;
var dep = result.department;
var costC = result.cost_centre;
var EmpID = result.id;
alert("Cost Centre: " + costC);
g_form.setValue('phone', phone);
g_form.setValue('email', email);
g_form.setValue('company', com);
g_form.setValue('manager', mgr);
g_form.setValue('location', loc);
g_form.setValue('department', dep);
g_form.setValue('Cost_centre', costC);
g_form.setValue('id', EmpID);
} else {
g_form.clearValue('phone');
g_form.clearValue('email');
g_form.clearValue('company');
g_form.clearValue('manager');
g_form.clearValue('location');
g_form.clearValue('department');
g_form.clearValue('Cost_centre');
g_form.clearValue('id');
}
} catch (err) {
alert(err.message);
}
}
}
Execution result: (only have phone field)