Getting Unhandled exception in GlideAjax error.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 09:26 AM
Hi All,
I am working on the one of the form, in this I need to populate the Requested For user email id and phone number.
For this I wrote Client script and Script Include:
Client script:

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 09:48 AM
@vinuth v Please update your client script and script include as follows.
Client Script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//var req=g_form.getValue('requested_for_user');
var ga = new GlideAjax('testdetails');
ga.addParam('sysparm_name','userdetails');
ga.addParam('sysparm_reqname',g_form.getValue('requested_for_user'));
ga.getXML(displayuservalue);
function displayuservalue(response){
var answer=response.responseXML.documentElement.getAttribute('answer');
var result=JSON.parse(answer);
g_form.setValue('email_user',result.email);
g_form.setValue('phone_number_of_user',result.phone);
}
//Type appropriate comment here, and begin script below
}
Script Include:
var testdetails = Class.create();
testdetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
userdetails: function() {
var sys_id = this.getParameter('sysparm_reqname');
var gr = new GlideRecord('sys_user');
gr.get(sys_id);
var userObj = {};
userObj.email = gr.email.toString();
userObj.phone = gr.phone.toString();
return JSON.stringify(userObj);
},
type: 'testdetails'
});
In your script your wrote
sysparm
as
sysparam
Due to which the script was failing. For more information on syntax please refer to https://docs.servicenow.com/bundle/washingtondc-api-reference/page/app-store/dev_portal/API_referenc...
Hope this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 10:39 AM
1. Script Include:
Ensure the Script Include is client-callable by checking the "Client Callable" checkbox in the Script Include definition.
var testdetails = Class.create();
testdetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
userdetails: function() {
var sys_id = this.getParameter('sysparam_reqname');
var userObj = {};
var gr = new GlideRecord('sys_user');
if (gr.get(sys_id)) {
userObj.email = gr.email.toString();
userObj.phone = gr.phone.toString();
} else {
userObj.error = "User not found";
}
return JSON.stringify(userObj);
},
type: 'testdetails'
});
2. Client Script:
Make sure that the g_form.getValue('requested_for_user') actually returns a valid sys_id. If it doesn't, the Script Include won't be able to find the corresponding record.
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('testdetails');
ga.addParam('sysparam_name', 'userdetails');
ga.addParam('sysparam_reqname', g_form.getValue('requested_for_user'));
ga.getXMLAnswer(function(response) {
if (!response) {
gs.addErrorMessage("No response from server.");
return;
}
try {
var result = JSON.parse(response);
if (result.error) {
gs.addErrorMessage("Error: " + result.error);
} else {
g_form.setValue('email_user', result.email || '');
g_form.setValue('phone_number_of_user', result.phone || '');
}
} catch (e) {
gs.addErrorMessage("Failed to parse response: " + e.message);
}
});
}
…………………………………………........................................................................................
Please Mark it helpful 👍and Accept Solution ✔️!! If this helps you to understand!!
………………………………………….......................................................................................

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 12:56 PM
Hi @vinuth v ,
I tried your problem in my PDI and it works for me please check below script
Client script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var ga = new GlideAjax('testdetails');
ga.addParam('sysparm_name', 'userdetails');
ga.addParam('sysparm_reqname', g_form.getValue('assigned_to'));
ga.getXML(displayuservalue);
function displayuservalue(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
var result = JSON.parse(answer);
// g_form.setValue('email_user', result.email);
alert("Rsult = " + result.phone)
g_form.setValue('email_user', result.email);
g_form.setValue('phone_number_of_user', result.phone);
g_form.update();
}
}
Script Include
var testdetails = Class.create();
testdetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
userdetails: function() {
var sys_id = this.getParameter('sysparm_reqname');
gs.log("sys_id = " + sys_id);
var gr = new GlideRecord('sys_user');
gr.get(sys_id);
var userObj = {};
userObj.email = gr.email.toString();
userObj.phone = gr.phone.toString();
gs.log("JSON.stringify(userObj) = " + JSON.stringify(userObj));
return JSON.stringify(userObj);
},
type: 'testdetails'
});
Please mark my answer correct and helpful if this works for you
Thanks and Regards
Sarthak