- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago - last edited 3 weeks ago
Hi Everyone,
I am learning GlideAjax in ServiceNow and trying to auto-populate Caller Phone Number on the Incident form.
Scenario:
When Caller is selected, I want to fetch the caller's mobile phone number from the sys_user table and populate it into a custom field u_caller_phone.
Issue:
The GlideAjax is executing, and the alert is triggering, but the answer is coming back empty even though the selected user has a mobile phone number populated.
Below is my Script Include:
var Caleerphonenumber = Class.create();
Caleerphonenumber.prototype = Object.extendsObject(AbstractAjaxProcessor, {
callerNumber: function() {
var number = this.getParameter("sys_number");
var Cell = "";
var gr = new GlideRecord("sys_user");
if (gr.get(number) && gr.mobile_phone) {
Cell = gr.mobile_phone.getDisplayValue();
}
return Cell;
},});
Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var gr = new GlideAjax("Caleerphonenumber");
gr.addParam("sysparm_name", "callerNumber");
gr.addParam("sysparm_number", newValue);
gr.getXMLAnswer(function(answer) {
alert(answer);
g_form.setValue("u_caller_phone", answer);
});}
Additional Details:
- Alert is triggering successfully with empty value
- Caller has mobile number but not populated
- Script Include is Client Callable
Could someone please help identify what I am missing here?
Thanks in advance.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hello @DurgaPrasadCH ,
use this corrected code,
Script Include :
callerNumber: function() {
var userId = this.getParameter("sysparm_number");
var cell = "";
var grUser = new GlideRecord("sys_user");
if (grUser.get(userId)) {
cell = grUser.getValue("mobile_phone") || "";
}
return cell;
}
Client script :
var ga = new GlideAjax("Caleerphonenumber");
ga.addParam("sysparm_name", "callerNumber");
ga.addParam("sysparm_number", newValue);
ga.getXMLAnswer(function(answer) {
if (answer) {
g_form.setValue("u_caller_phone", answer);
} else {
g_form.clearValue("u_caller_phone");
}
});
change done - parameter mismatch i.e in client script using "sysparm_number" and in script include trying to retrieve "var number = this.getParameter("sys_number");"
If my response helped mark as helpful and accept the solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hello @DurgaPrasadCH , Not sure which one was raised first, but this seems to be the same as your previous issue. Sharing the same answer here as well. Happy learning.
You have a mistake in the Script Include - you are referring to wrong parameter. just correct it as below and it should work. Basically, whatever you send from the client, should look for the same parameters in the Script Include.
From
var number = this.getParameter("sys_number");
To
var number = this.getParameter("sysparm_number");
Here is complete Script Include:
callerNumber: function() { var number = this.getParameter("sysparm_number"); var Cell = ""; var gr = new GlideRecord("sys_user"); if (gr.get(number) && gr.mobile_phone) { Cell = gr.mobile_phone.getDisplayValue(); } return Cell; },
Regards,
Nishant
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hello @DurgaPrasadCH ,
use this corrected code,
Script Include :
callerNumber: function() {
var userId = this.getParameter("sysparm_number");
var cell = "";
var grUser = new GlideRecord("sys_user");
if (grUser.get(userId)) {
cell = grUser.getValue("mobile_phone") || "";
}
return cell;
}
Client script :
var ga = new GlideAjax("Caleerphonenumber");
ga.addParam("sysparm_name", "callerNumber");
ga.addParam("sysparm_number", newValue);
ga.getXMLAnswer(function(answer) {
if (answer) {
g_form.setValue("u_caller_phone", answer);
} else {
g_form.clearValue("u_caller_phone");
}
});
change done - parameter mismatch i.e in client script using "sysparm_number" and in script include trying to retrieve "var number = this.getParameter("sys_number");"
If my response helped mark as helpful and accept the solution.