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