Not able to set values to list collector from script include

Tanwir Singh11
Tera Expert

Hi All,

I am filtering out the values from list collector (list_of_devices) which is referencing alm_asset table and another reference is location. So, i want to show only those assets which are from that location.

I have created a client script and a script include. I am able to return the sys_id from script include to client script but not able to set them in list collector. Below is my code:

Script include:

 getSiteAssets: function() {
		var arr_name = [];
                var OtoO = this.getParameter('sysparm_type');

                var ast = new GlideRecord('alm_asset');
                ast.addQuery('location', OtoO);
                ast.query();
                while (ast.next()) {                    
					arr_name.push(ast.getUniqueValue());
				}                
                return arr_name.toString();
            },

 

Client script:

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var ga = new GlideAjax('SiteDependentAssets');
    ga.addParam('sysparm_name', 'getSiteAssets');
    ga.addParam('sysparm_type', newValue);
    ga.getXML(parseData);

    function parseData(response) {
        var answer = response.responseXML.documentElement.getAttribute('answer');
		alert(answer);
        g_form.setValue('list_of_devices', answer);
    }
}

 

Please help.

1 ACCEPTED SOLUTION

inform business that this is not feasible.

Either tell them

1) you will filter the list collector based on location and let user select the location to right bucket

OR

2) you will set the right bucket with the available assets for location selected and let user remove if they wish to

If my response helped you please mark it correct to close the question so that it benefits future readers as well.

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

24 REPLIES 24

Abhijit4
Mega Sage

Hi Tanwir,

Please try below,

 script include

getSiteAssets: function() {
var sysIDs="";
var OtoO = this.getParameter('sysparm_type');

var ast = new GlideRecord('alm_asset');
ast.addQuery('location', OtoO);
ast.query();
while (ast.next()) {
if(sysIDs=="")
sysIDs=ast.sys_id.toString();
else
sysIDs=sysIDs+","+ast.sys_id.toString();
}
return sysIDs;
}, 

Client script

var ga = new GlideAjax('SiteDependentAssets');
ga.addParam('sysparm_name', 'getSiteAssets');
ga.addParam('sysparm_type', newValue);
ga.getXML(parseData);

function parseData(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
g_form.setValue('list_of_devices', answer);
}

 

Let me know if you have any further queries.

Please mark this as Correct or helpful if it helps.

Thanks and Regards,
Abhijit

By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

Hey Abhijit,

I tried your code and still not working.

Hey

Could you please let us know what value are you getting in alert if you put in client script as below?

alert(answer);

One more question, are you writing this in on change client script?

Thanks and Regards

Abhijit

 

By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

find_real_file.png

 

I am getting the sys_id from script include.

and yes, it's a catalog onchange client script.