Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Passing Array to Script Include from client Script

Kiran Patil3
Giga Expert

Hi,

I am passing sys_id of selected records in list collector to script include. but Script Include is not able process input passed from client script.

#Client Script

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

	var list = g_form.getValue('list_collector');
		var elements = list.split(',');
	alert(elements);
		var ga = new GlideAjax('SCCatalogHelper');    // Script include : FPSCHelperClient
		ga.addParam('sysparm_name', 'getHostServersList');    // Function to be called in Script Include : GetUserInfo
		ga.addParam('sysparm_cmdbciSysId', elements);   // set UserId parameter
		ga.getXML(updateFields);
   
}

function updateFields(response)
{
	var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);
}

 

#Script Include:

	getHostServersList: function()
		{   
			var result = [];
			var array = this.getParameter('sysparm_cmdbciSysId').toString().split(",");
			
			return array;
			
		},

I have attached output from screen.

Appreciate your help.

Thank You

Kiran Patil

6 REPLIES 6

The SN Nerd
Giga Sage
Giga Sage

Send it as a string and return it as a string.


ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022

Yash Agrawal1
Tera Guru

Hi Kiran Patil 

Today I am working on the same requirement. The below screenshot matches exactly to your requirements.

Don't Split array on client-side, split it in server-side, it is very easy to manage.

please refer below code.

 

Catalog Client Script:

function onChange(control, oldValue, newValue, isLoading)
{
if (isLoading || newValue == '')
{
return;
}
var some,i;
//var a = g_form.getDisplayBox('select_ci_list').value;
//alert(a);
var ab = g_form.getValue('select_ci_list');
var ga= new GlideAjax('MultipleCIinclude');
ga.addParam("sysparm_name","abcdefg");
ga.addParam("sysparm_ci_name",newValue);
ga.getXMLWait();
g_form.setValue("env",ga.getAnswer());

// function XYZ(response)
// {
// var answer1 = response.responseXML.documentElement.getAttribute("answer");
// alert("answer1"+answer1);
// // var data= [];
// // data = JSON.parse(answer1);
// // alert("Data"+data);


// }


}

 

find_real_file.png

 

Script include:

var MultipleCIinclude = Class.create();
MultipleCIinclude.prototype = Object.extendsObject(AbstractAjaxProcessor,
{
abcdefg:function()
{
//gs.addInfoMessage("Welcome !");
var ciid,i,j;
var arr={};
var envlist=[];
//var envarr={};
var cilist= this.getParameter('sysparm_ci_name');
arr=cilist.split(',');
for(i=0;i<arr.length;i++)
{
var gr= new GlideRecord('cmdb_ci_server');
gr.addQuery('sys_id',arr[i]);
gr.query();
while(gr.next())
{
ciid=gr.used_for;
//gs.addInfoMessage(gr.getDisplayName(arr[i])+"--"+ciid);
envlist[i]=ciid;
}

}
for(j=0;j<envlist.length;j++)
{
gs.addInfoMessage(envlist[j]);
}
return envlist.toString();
//gs.addInfoMessage(envlist.length);
// var jsonCampi = JSON.stringify(envlist);
// return jsonCampi;
},

type: 'MultipleCIinclude'
});