- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 08:45 PM
Hi,
I have written 2 GlideAJAX with one ScriptIncludes encapsulating both the functions. I have to see that the incidents and RITM's selected as list collector at the task level `should populate in the work notes. Incidents are displaying well, but not RITM's. Kindly help.
GlideAjax 1:
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var ga = new GlideAjax("listCollectorWNClass");
ga.addParam("sysparm_name", "listCollectorIncidentFunction");
ga.addParam("sysparm_id", inc);
ga.getXMLWait();
var answer = ga.getAnswer();
g_form.setValue("work_notes", answer);
// g_form.work_notes = answer;
}
GlideAjax 2
function onSubmit() {
//Type appropriate comment here, and begin script below
var rq_item = g_form.getValue("requests_submitted_by_itam");
var ga = new GlideAjax("listCollectorWNClass");
ga.addParam("sysparm_name", "listCollectorRITMFunction");
ga.addParam("sysparm_id", rq_item);
ga.getXMLWait();
var answer = ga.getAnswer();
g_form.setValue("work_notes", answer);
}
ScriptIncludes
var listCollectorWNClass = Class.create();
listCollectorWNClass.prototype = Object.extendsObject(AbstractAjaxProcessor, {
listCollectorIncidentFunction: function() {
var incArr = this.getParameter('sysparm_id').toString().split(',');
var numArr = [];
var answer;
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
numArr.push(inc1.number);
}
}
gs.log("Test for Suman", numArr);
answer = numArr.join(',');
return answer;
// return JSON.stringify(numArr);
},
listCollectorRITMFunction: function() {
var rqArr = this.getParameter('sysparm_id').toString().split(',');
var numArr = [];
for (var i = 0; i < rqArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(rqArr[i].toString())) {
numArr.push(rq_itm.number);
}
}
gs.log("Test for Suman", numArr);
answer = numArr.join(',');
return answer;
// return JSON.stringify(numArr);
},
type: 'listCollectorWNClass'
});
Regards
Suman P.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 05:00 AM
Hi @Community Alums
Highlighted the changes below in red
Script include :
listCollectorIncRitmFunction: function() {
var incArr = this.getParameter('sysparm_incId').toString().split(',');
var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');
var newIncArray =[];
var newritmArray =[];
var object = {
incident :'',
ritm :''
};
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
newIncArray.push(inc1.number);
}
}
object.incident = newIncArray.toString();
for (var i = 0; i < ritmArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(ritmArr[i].toString())) {
newritmArray.push(rq_itm.number);
}
}
object.ritm = newritmArray.toString();
return JSON.stringify(object);
},
Client script :
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
/*Inc & Ritm both*/
var gaIncRitm = new GlideAjax("listCollectorWNClass");
gaIncRitm.addParam("sysparm_name", "listCollectorIncRitmFunction");
gaIncRitm.addParam("sysparm_ritmId", rq_item);
gaIncRitm.addParam("sysparm_incId", inc);
gaIncRitm.getXMLWait();
/*Set values*/
/*Put some alerts- info messages to check what you are receiving from script include*/
g_form.addInfoMessage('Response=' + JSON.parse(gaIncRitm.getAnswer()));
var answer = JSON.parse(gaIncRitm.getAnswer());
var setValues = "Incident :" + answer.incident.toString() + '\n' + 'Ritms :' + answer.ritm.toString();
g_form.setValue("work_notes", setValues);
}
This should work.
I'm able to get it in worknotes :
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 11:00 PM - edited 10-01-2023 11:02 PM
Hi @Community Alums
Can you try using only one onSubmit script & check if this works :
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
/*RITM*/
var gaRitm= new GlideAjax("listCollectorWNClass");
gaRitm.addParam("sysparm_name", "listCollectorRITMFunction");
gaRitm.addParam("sysparm_id", rq_item);
gaRitm.getXMLWait();
/*Incident*/
var gaInc = new GlideAjax("listCollectorWNClass");
gaInc.addParam("sysparm_name", "listCollectorIncidentFunction");
gaInc.addParam("sysparm_id", inc);
gaInc.getXMLWait();
/*Set ritm*/
var answerRitm = gaRitm.getAnswer();
g_form.setValue("work_notes", answerRitm);
/*Set inc*/
var answerInc = gaInc.getAnswer();
g_form.setValue("work_notes", answerInc);
}
OR else if above solution does not work,
You can create only one function in script include & create one JSON object to get both incidents & ritms and return that JSON.
e.g.,
var object = {
incident : [],
ritms :[],
}
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 12:56 AM
Hi @Vishal Birajdar ,
Thank you so much. That didn't work. Still populating only INC. Can you please help me with the JSON obj script.
Regards
Suman P.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 01:20 AM
Hi @Community Alums
Can you try below -
1. Script include function :
updated the function name just for simplicity.
listCollectorIncRitmFunction: function() {
var incArr = this.getParameter('sysparm_incId').toString().split(',');
var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');
var newIncArray =[];
var newritmArray =[];
var object = {};
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
newIncArray.push(inc1.number);
}
}
object.incident = newIncArray;
for (var i = 0; i < rqArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(rqArr[i].toString())) {
newritmArray.push(rq_itm.number);
}
}
object.ritm = newritmArray;
return JSON.stringify(object);
},
Client script :
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
/*Inc & Ritm both*/
var gaIncRitm= new GlideAjax("listCollectorWNClass");
gaIncRitm.addParam("sysparm_name", "listCollectorIncRitmFunction");
gaIncRitm.addParam("sysparm_ritmId", rq_item);
gaIncRitm.addParam("sysparm_incId", inc);
gaIncRitm.getXMLWait();
/*Set values*/
/*Put some alerts- info messages to check what you are receiving from script include*/
g_form.addInfoMessage('Response=' + JSON.parse (gaIncRitm.getAnswer()));
var answer = JSON.parse (gaIncRitm.getAnswer()) ;
var setValues = "Incident :" + answer.incident + '\n' + 'Ritms :' + answer.ritm ;
g_form.setValue("work_notes", setValues);
}
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 04:23 AM
I tried as said, and I am getting the error.
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
/*Inc & Ritm both*/
var gaIncRitm = new GlideAjax("listCollectorWNClass");
gaIncRitm.addParam("sysparm_name", "listCollectorIncRitmFunction");
gaIncRitm.addParam("sysparm_ritmId", rq_item);
gaIncRitm.addParam("sysparm_incId", inc);
gaIncRitm.getXMLWait();
/*Set values*/
/*Put some alerts- info messages to check what you are receiving from script include*/
g_form.addInfoMessage('Response=' + JSON.parse(gaIncRitm.getAnswer()));
var answer = JSON.parse(gaIncRitm.getAnswer());
var setValues = "Incident :" + answer.incident + '\n' + 'Ritms :' + answer.ritm;
g_form.setValue("work_notes", setValues);
}
var listCollectorWNClass = Class.create();
listCollectorWNClass.prototype = Object.extendsObject(AbstractAjaxProcessor, {
listCollectorIncRitmFunction: function() {
var incArr = this.getParameter('sysparm_incId').toString().split(',');
var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');
var newIncArray =[];
var newritmArray =[];
var object = {};
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
newIncArray.push(inc1.number);
}
}
object.incident = newIncArray;
for (var i = 0; i < rqArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(rqArr[i].toString())) {
newritmArray.push(rq_itm.number);
}
}
object.ritm = newritmArray;
return JSON.stringify(object);
},
type: 'listCollectorWNClass'
});
Regards
Suman P.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 05:00 AM
Hi @Community Alums
Highlighted the changes below in red
Script include :
listCollectorIncRitmFunction: function() {
var incArr = this.getParameter('sysparm_incId').toString().split(',');
var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');
var newIncArray =[];
var newritmArray =[];
var object = {
incident :'',
ritm :''
};
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
newIncArray.push(inc1.number);
}
}
object.incident = newIncArray.toString();
for (var i = 0; i < ritmArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(ritmArr[i].toString())) {
newritmArray.push(rq_itm.number);
}
}
object.ritm = newritmArray.toString();
return JSON.stringify(object);
},
Client script :
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
/*Inc & Ritm both*/
var gaIncRitm = new GlideAjax("listCollectorWNClass");
gaIncRitm.addParam("sysparm_name", "listCollectorIncRitmFunction");
gaIncRitm.addParam("sysparm_ritmId", rq_item);
gaIncRitm.addParam("sysparm_incId", inc);
gaIncRitm.getXMLWait();
/*Set values*/
/*Put some alerts- info messages to check what you are receiving from script include*/
g_form.addInfoMessage('Response=' + JSON.parse(gaIncRitm.getAnswer()));
var answer = JSON.parse(gaIncRitm.getAnswer());
var setValues = "Incident :" + answer.incident.toString() + '\n' + 'Ritms :' + answer.ritm.toString();
g_form.setValue("work_notes", setValues);
}
This should work.
I'm able to get it in worknotes :
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates