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.

Info message not showing in portal

shwethanair
Kilo Expert

Hello,

 

I have a requirement to show an alert if the record already exists in the table for the same name and show the link to the record through alert or infomessage. For this I wrote a Catalog client script and is working while doing 'Try it'  but not  working when I am trying the same through portal. 

My OnChange Script:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var name = g_form.getValue('u_full_name');
var usr = new GlideRecord('u_eap');
usr.addQuery('u_full_name',name);
usr.query();
if(usr.next()){

var link = '<a href="u_eap.do?sys_id=' + usr.sys_id + '" class="breadcrumb" >' + usr.u_full_name + '</a>';
var message = 'The EAP record already exists for the name entered. Please check here' + link + ' .<br/>';

g_form.addInfoMessage(message);

}

}

find_real_file.png

 

 

Thanks in advance!

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

Hi Shwetha,

GlideRecord is not allowed in client script in portal; so it would break; Refer below

GlideRecord Client API does not work in the Service Catalog standard UI but works in Service Portal

You need to use GlideAjax + Script Include approach for this -> it would work in native and portal both

Updated code below for GlideAjax

Client Script:

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

var name = g_form.getValue('u_full_name');

var ga = new GlideAjax('u_userInfoAjax');
ga.addParam('sysparm_name', "getInfo");
ga.addParam('sysparm_userFullName', name);
ga.getXMLAnswer(callBackMethod);

}

function callBackMethod(response){

var answer = response;

if(answer != ''){
var link = '<a href="u_eap.do?sys_id=' + answer + '" class="breadcrumb" >' + g_form.getValue('u_full_name') + '</a>';

var message = 'The EAP record already exists for the name entered. Please check here' + link + ' .<br/>';

g_form.addInfoMessage(message);
}

}

Script Include: Create Client Callable Script Include

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

	getInfo: function(){
		var name = this.getParameter('sysparm_userFullName');
		var usr = new GlideRecord('u_eap');
		usr.addQuery('u_full_name', name);
		usr.query();
		if(usr.next()){
			return usr.sys_id;
		}
		return '';
	},

	type: 'u_userInfoAjax'
});

find_real_file.png

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

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

View solution in original post

16 REPLIES 16

Ankur Bawiskar
Tera Patron
Tera Patron

@shwethanair 

Did you get a chance to read my previous comment related to this?

Regards
Ankur

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

Hello Ankur,

Thanks for the reply.

Yes I tried using your script and I can see info message showing in portal too, but the link is not working correctly neither in portal nor in catalog.

find_real_file.png

 

Regards,

Shwetha Nair

 

Never mind,

Its done. 🙂

Glad that it helped

What was the issue?

Regards
Ankur

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

Variable value was wrong.

 

Regards,

Shwetha Nair