Unhandled exception in GlideAjax

Community Alums
Not applicable

Hi All,

 

I am getting unhandled exception in GlideAjax

 

I have created below:

Catalog Client Script:

var rf = g_form.getValue('requested_for');
var ga = new GlideAjax('getAssets');
ga.addParam('sysparm_name', "getAssetsList");
ga.addParam('sysparm_user', rf);
ga.getXML(setAnswer);
return false;
function setAnswer(answer) {

if (answer == 'false') {
g_form.addErrorMessage('There is Sweet Mistake in Logic');
return false;
}
var arr = JSON.parse(ga.getAnswer());
if (arr.length==0){
g_form.clearValue('asset_to_be_collected');
}
var assets = '';

for (var i = 0; i < arr.length; i++) {
var temp = 'Asset ' + (i + 1) + /*': '*/ '\n';
temp += "Asset Name: " + arr[i].dn + ", ";
temp += "Asset Tag: " + arr[i].at + ", ";
temp += "Serial Number: " + arr[i].sn;
assets += temp + '\n\n';

g_form.setValue('asset_to_be_collected', assets) +'/n';
//g_form.setReadOnly('asset_to_be_collected', true);

}

}

 

Script Include:

getAssetsList: function() {
var user = this.getParameter('sysparm_user');
var arr = [];
var gr = new GlideRecord("alm_hardware");
gr.addQuery("assigned_to.sys_id", user);
gr.query();
//gs.log("Test User" + gr);
while (gr.next()) {
var obj = {};
obj.dn = gr.display_name.toString();
obj.at = gr.asset_tag.toString();
obj.sn = gr.serial_number.toString();
arr.push(obj);
}
var data = JSON.stringify(arr);
//gs.log("My assets are - "+ data);
return data;


},

 

Getting below error in portal:

Tejas12_0-1678701835023.png

 

Please help.

 

Thanks,

Tejas

1 ACCEPTED SOLUTION

@Community Alums 

possibly it's not getting called for end users with no role

add this function to your script include

isPublic:function(){
return true;
},

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

17 REPLIES 17

AnveshKumar M
Tera Sage
Tera Sage

Hi @Community Alums ,

 

You can try rewriting the Catalog client script include like the one below.

 

var rf = g_form.getValue('requested_for');
var ga = new GlideAjax('getAssets');
ga.addParam('sysparm_name', "getAssetsList");
ga.addParam('sysparm_user', rf);
ga.getXMLAnswer(setAnswer);

function setAnswer(answer) {
	var arr = JSON.parse(answer);
	g_form.clearValue('asset_to_be_collected');
	
	if (arr.length > 0){
		var assets = '';

		for (var i = 0; i < arr.length; i++) {
			var temp = 'Asset ' + (i + 1) + '\n';
			temp = temp + "\tAsset Name: " + arr[i].dn + ", ";
			temp = temp + "\tAsset Tag: " + arr[i].at + ", ";
			temp = temp + "\tSerial Number: " + arr[i].sn;
			assets = assets + temp + '\n\n';
		}
        g_form.setValue('asset_to_be_collected', assets);
	}

}

 

Thanks,

Anvesh

Thanks,
Anvesh

Community Alums
Not applicable

Hello @Community Alums ,

 

You need to change and add some lines in your script.

After this line function setAnswer(answer) {  - add following

 var answer = response.responseXML.documentElement.getAttribute("answer");

In this line var arr = JSON.parse(ga.getAnswer()); - change following-

var arr = JSON.parse(answer);

Use alert for checking the values at different levels.

 

If this solves your query, mark this as helpful and correct.

 

Regards

Anand

Community Alums
Not applicable

Hi Anand,

 

As a Admin I am getting expected output with code I have pasted but when I impersonate to the ITIL user it is not fetching any data and throws "There is javascript error in your browser console".

 

Thanks,

Tejas

Prince Arora
Tera Sage
Tera Sage

@Community Alums ,

 

Can you update the snippet as mentioned below and let me know if it solves your problem:


var rf = g_form.getValue('requested_for');
var ga = new GlideAjax('getAssets');
ga.addParam('sysparm_name', "getAssetsList");
ga.addParam('sysparm_user', rf);
ga.getXML(setAnswer);
//return false;
function setAnswer(response) {

  var answer = response.responseXML.documentElement.getAttribute("answer");

if (answer == 'false') {
g_form.addErrorMessage('There is Sweet Mistake in Logic');
//return false;
}

}

 

And if you dont want to parse the response please use "getXMLAnswer" instead of "getXML"

 

If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact.