GlideAjax Returning Empty Value While Fetching Caller Mobile Number from sys_user Table in Incident

DurgaPrasadCH
Tera Contributor

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.

1 ACCEPTED SOLUTION

yashkamde
Mega Sage

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.

View solution in original post

2 REPLIES 2

Nishant8
Tera Sage

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

yashkamde
Mega Sage

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.