- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-12-2023 07:39 AM - edited ‎05-17-2023 03:53 AM
Hello,
I am currently using a client script, which calls a script include to pull information from a RITM and populate it into a multi-line text field on a record producer but keep getting an error.
I've referenced it with one I created which pulled from a RITM and populated a text field on a catalog item but can't see where it's going wrong - can anyone point me in the right direction?
Thanks in advance.
Client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var gajax = new GlideAjax('LOTH_GetRequestedItemDetails');
gajax.addParam('sysparm_name', 'isRITM');
gajax.addParam('sysparm_ritm', newValue);
gajax.getXML(ajaxResponse);
function ajaxResponse(response) {
var answer = JSON.parse(response.responseXML.documentElement.getAttribute("answer"));
var disputeRequest = 'Request: ' + answer.request;
var disputerequestedFor = 'Requested for: ' + answer.requestedFor;
var disputecontact = 'Contact number: ' + answer.contact;
var disputelocation = 'Location : ' + answer.location;
g_form.setValue('u_requested_item_details', + disputeRequest + disputerequestedFor + disputecontact + disputelocation);
}
}
Script include:
var LOTH_GetRequestedItemDetails = Class.create();
LOTH_GetRequestedItemDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
isRITM: function() {
var ritm = this.getParameter('sysparm_ritm');
var retRes = {};
//get user record:
var gr = new GlideRecord('sc_req_item');
gr.addQuery('sys_id', ritm);
gr.query();
if (gr.next()) {
retRes.request = gr.request + '\n';
retRes.requestedFor = gr.requestedFor + '\n';
retRes.contact = gr.variables.u_phone_contact + '\n';
retRes.location = gr.variables.u.location + '\n';
}
return new JSON().encode(retRes);
},
type: 'LOTH_GetRequestedItemDetails'
});
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-29-2023 02:56 AM
This was fixed with the following:
Client Script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var gajax = new GlideAjax('LOTH_GetRequestedItemDetails');
gajax.addParam('sysparm_name', 'isRITM');
gajax.addParam('sysparm_ritm', newValue);
gajax.getXMLAnswer(ajaxResponse);
}
function ajaxResponse(response) {
var answer = JSON.parse(response);
var disputeRequest = 'Request: ' + answer.request;
var disputeItem = 'Item: ' + answer.item;
var disputeRequestedFor = 'Requested for: ' + answer.requested_for;
var disputeRequestedForID = 'Requested for user ID: ' + answer.requestedForID;
var disputeContact = 'Contact number: ' + answer.contact;
var disputeLocation = 'Location: ' + answer.location;
//var disputeResolver = 'Resolving team: ' + answer.resolver;
//var disputeClosingComments = "Closing comments: " + answer.comments;
g_form.setValue('u_requested_item_details', disputeRequest + '\n' + disputeItem + '\n' + disputeRequestedFor + '\n' + disputeRequestedForID + '\n' + disputeContact + '\n' + disputeLocation); //+ '\n' + disputeResolver + '\n' + disputeClosingComments);
}
Script Include:
var LOTH_GetRequestedItemDetails = Class.create();
LOTH_GetRequestedItemDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
isRITM: function() {
var ritm = this.getParameter('sysparm_ritm');
var retRes = {};
//get user record:
var gr = new GlideRecord('sc_req_item');
if (!gr.get(ritm)) {
return;
} else {
retRes.request = gr.request.getDisplayValue();
retRes.item = gr.cat_item.getDisplayValue();
retRes.requested_for = gr.request.requested_for.getDisplayValue();
retRes.requestedForID = gr.request.requested_for.user_name.getDisplayValue();
retRes.contact = gr.variables.u_phone_contact.getDisplayValue();
retRes.location = gr.variables.location.getDisplayValue();
//retRes.resolver = gr.sc_task.assignment_group.getDisplayValue();
//retRes.comments = gr.comments;
}
return JSON.stringify(retRes);
},
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-12-2023 07:53 AM
Hi,
(you have mis-identified what is the script include and client script), but in the script include, try:
return JSON.stringify(retRes);
And in the Client script, use
gajax.getXMLAnswer(ajaxResponse);
This is what I see in existing client scripts and script includes. You can add debug statements in both to see what is going on. Add
gs.info("LOTH_GetRequestedItemDetails: retRes = " + retRes);
just before the return in the script include. The check script log statements to see.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-17-2023 03:54 AM
Ah yes, I've corrected that now, thanks!
I've made the following amendments, unsure where the logs are for that output, but I've checked the console and it returns a glide ajax error:
Client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var gajax = new GlideAjax('LOTH_GetRequestedItemDetails');
gajax.addParam('sysparm_name', 'isRITM');
gajax.addParam('sysparm_ritm', newValue);
//gajax.getXML(ajaxResponse);
gajax.getXMLAnswer(ajaxResponse);
function ajaxResponse(response) {
var answer = JSON.parse(response.responseXML.documentElement.getAttribute("answer"));
var disputeRequest = 'Request: ' + answer.request;
var disputeRequestedFor = 'Requested for: ' + answer.requestedFor;
var disputeContact = 'Contact number: ' + answer.contact;
var disputeLocation = 'Location : ' + answer.location;
g_form.setValue('u_requested_item_details', + disputeRequest + disputeRequestedFor + disputeContact + disputeLocation);
}
}
Script include:
var LOTH_GetRequestedItemDetails = Class.create();
LOTH_GetRequestedItemDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
isRITM: function() {
var ritm = this.getParameter('sysparm_ritm');
var retRes = {};
//get user record:
var gr = new GlideRecord('sc_req_item');
gr.addQuery('sys_id', ritm);
gr.query();
if (gr.next()) {
retRes.request = gr.request + '\n';
retRes.requestedFor = gr.requestedFor + '\n';
retRes.contact = gr.variables.u_phone_contact + '\n';
retRes.location = gr.variables.u.location + '\n';
}
//return new JSON().encode(retRes);
gs.info("LOTH_GetRequestedItemDetails: retRes = " + retRes);
return JSON.stringify(retRes);
},
type: 'LOTH_GetRequestedItemDetails'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-17-2023 04:07 AM
Hi,
You can check the logs in "Script Log Statements" , also in your client script you can simply put an alert statement to see what values are being returned : alert("Answer is"+ answer + answer.request);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-17-2023 05:13 AM - edited ‎05-17-2023 05:33 AM
Not having any luck with the script log statements, nothing appears after changing the value on the catalog item. The alert doesn't show either, presumably because the javascript console error box appears at the same time as well
Edit: Part of the issue may be my information retrieval, some of them are actually on the request table not the item table so will review and amend these and test again.