Help - For Loop in Client Script

ktjstn
Kilo Expert

Hi,

 I want to auto-populate the equivalent Server Environment of each Server CI selected in Server CI (List) field. But I am only getting the first value and the rest was just a comma.

find_real_file.png

Here are my scripts:

1. Script Include:

find_real_file.png

 

2. Client Script:

find_real_file.png

 

Thank you for your answer! 🙂

1 ACCEPTED SOLUTION

Harsh Vardhan
Giga Patron

try now. 

 

Script Include:

 

var watch = Class.create();
watch.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	getEmail: function()
	{
		var abc=[];
		var arr=[];
		var et = this.getParameter('sysparm_user_name');
		gs.log('value of is val length'+et);
		var res = et.split(',');
		gs.log('length of array is'+res.length);
		for(var i=0;i<res.length;i++){
		var gr = new GlideRecord('cmdb_ci');
		gr.get('sys_id',res[i]);
		abc.push(gr.u_environment);
		}
		return abc.join(',');
	},
	
	type: 'watch'
});

 

Client Script:

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	
	//Type appropriate comment here, and begin script below
	
	var abc= g_form.getValue('u_related_ci').toString();
	
	var ga = new GlideAjax('watch');
	ga.addParam('sysparm_name', 'getEmail');
	
	ga.addParam('sysparm_user_name', abc);
	
	ga.getXML(HelloWorldParse);
	
	
	
	
	function HelloWorldParse(response) {
		var answer = response.responseXML.documentElement.getAttribute("answer");
		
		g_form.setValue('u_server_env',answer);
	}
	
	
}

View solution in original post

5 REPLIES 5

Harsh Vardhan
Giga Patron

try now. 

 

Script Include:

 

var watch = Class.create();
watch.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	getEmail: function()
	{
		var abc=[];
		var arr=[];
		var et = this.getParameter('sysparm_user_name');
		gs.log('value of is val length'+et);
		var res = et.split(',');
		gs.log('length of array is'+res.length);
		for(var i=0;i<res.length;i++){
		var gr = new GlideRecord('cmdb_ci');
		gr.get('sys_id',res[i]);
		abc.push(gr.u_environment);
		}
		return abc.join(',');
	},
	
	type: 'watch'
});

 

Client Script:

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	
	//Type appropriate comment here, and begin script below
	
	var abc= g_form.getValue('u_related_ci').toString();
	
	var ga = new GlideAjax('watch');
	ga.addParam('sysparm_name', 'getEmail');
	
	ga.addParam('sysparm_user_name', abc);
	
	ga.getXML(HelloWorldParse);
	
	
	
	
	function HelloWorldParse(response) {
		var answer = response.responseXML.documentElement.getAttribute("answer");
		
		g_form.setValue('u_server_env',answer);
	}
	
	
}

Hi Harshvardhan,

Thank you for your response.

I try this script but it only displays the first 2 values.

Hi,

 

Add a condition in server side that 

 

gr.u_environment !=''

 

 

Thanks

On my script?

Or in Harshvardhan's script?