Interested in a ServiceNow event built for developers? Registration for now[dev]26 is officially open!

GlideAjax returning null from Script Include

NishmithaS
Tera Contributor

I'm trying to convert List Collector sys_ids to user names using GlideAjax. The List Collector returns comma-separated sys_ids, which I pass to a client-callable Script Include. However, the GlideAjax response is always null.

 

Script include 

var getwatchlistusernames = Class.create();
getwatchlistusernames.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getName: function() {
var ids = this.getParameter('sysparm_ids');
var names = [];

var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', 'IN', ids);
gr.query();

while (gr.next()) {
names.push(gr.getValue('name'));
}

return names.join(',');
},

type: 'getwatchlistusernames'
});

 

Catalog Client script 

var ga = new GlideAjax('getwatchlistusernames');

ga.addParam('sysparm_name', 'getName');

ga.addParam('sysparm_ids', g_form.getValue('user'));

 

ga.getXMLAnswer(callback);

 

function callback(response) {

    alert(response);

    // g_form.setValue('short_description', response);

}

1 ACCEPTED SOLUTION

Hi @NishmithaS ,

 

i looked into the your both script include and catalog client script. i have made one change in script include function name and it worked in my PDI

Script include:

var getwatchlistusernames = Class.create();
getwatchlistusernames.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getNames: function() { // getName changed to getNames
        var ids = this.getParameter('sysparm_ids');
        var names = [];

        var gr = new GlideRecord('sys_user');
        gr.addQuery('sys_id', 'IN', ids);
        gr.query();

        while (gr.next()) {
            names.push(gr.getValue('name'));
        }

        return names.join(',');
    },

    type: 'getwatchlistusernames'
});

 

Catalog client script:

    var ga = new GlideAjax('getwatchlistusernames');
    ga.addParam('sysparm_name', 'getNames');// from getName to getNames
    ga.addParam('sysparm_ids', g_form.getValue('user'));
    ga.getXMLAnswer(callback);
    function callback(response) {

        alert(response);
		    // g_form.setValue('short_description', response);



    }

 

can you try this and let me know still your getting null as the resposne 


Regards
BK
LinkedIn: https://www.linkedin.com/in/bhavyashree-karanth-55032a121
YouTube: https://www.youtube.com/@NowWithBhavya

View solution in original post

17 REPLIES 17

Hi @Ankur Bawiskar 

Catalog Client script

NishmithaS_0-1783158106136.png

Script Include

NishmithaS_1-1783158153380.png

 

Hi @NishmithaS ,

 

i looked into the your both script include and catalog client script. i have made one change in script include function name and it worked in my PDI

Script include:

var getwatchlistusernames = Class.create();
getwatchlistusernames.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getNames: function() { // getName changed to getNames
        var ids = this.getParameter('sysparm_ids');
        var names = [];

        var gr = new GlideRecord('sys_user');
        gr.addQuery('sys_id', 'IN', ids);
        gr.query();

        while (gr.next()) {
            names.push(gr.getValue('name'));
        }

        return names.join(',');
    },

    type: 'getwatchlistusernames'
});

 

Catalog client script:

    var ga = new GlideAjax('getwatchlistusernames');
    ga.addParam('sysparm_name', 'getNames');// from getName to getNames
    ga.addParam('sysparm_ids', g_form.getValue('user'));
    ga.getXMLAnswer(callback);
    function callback(response) {

        alert(response);
		    // g_form.setValue('short_description', response);



    }

 

can you try this and let me know still your getting null as the resposne 


Regards
BK
LinkedIn: https://www.linkedin.com/in/bhavyashree-karanth-55032a121
YouTube: https://www.youtube.com/@NowWithBhavya

Hi @Bhavya11 
Thank you so much. It worked after I changed the function name.
I have one question Is there any reason getName wouldn't work?

Hi @NishmithaS ,

 

While ServiceNow has one OOTB API's that use the method name getName(). here is document link . 
Root cause may have been an internal naming conflict in that specific context or scope. Since the method worked immediately after renaming.  

 


Regards
BK
LinkedIn: https://www.linkedin.com/in/bhavyashree-karanth-55032a121
YouTube: https://www.youtube.com/@NowWithBhavya

Tejas Adhalrao
Kilo Sage

Hi @NishmithaS ,

1- Ensure the Client callable checkbox is checked on the Script Include.

2 - Verify the List Collector value

Before calling GlideAjax, check what you're actually sending:

alert(g_form.getValue('user'));

this return like this  = 46d44...,8f3b2...,a1234...

 

 

3 - Use getDisplayValue() instead of getValue()

  • The name field is not always the display value. Try:

     
    names.push(gr.getDisplayValue());

    ORR

names.push(gr.getDisplayValue('name'));

 

4= add Logs in your scritp include

gs.info("IDs: " + ids);