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'
});