GlideAJAX and ScriptInclude issue

Community Alums
Not applicable

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'
});

 

RITM.PNG

 

W.PNG

 

Regards

Suman P.

1 ACCEPTED SOLUTION

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 :

 

VishalBirajdar_0-1696248015487.png

 

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

View solution in original post

18 REPLIES 18

Arpan Baishya
Kilo Sage

Hi @Community Alums,

 

Have you tried debugging your code? Have you verified if the values (RITM numbers) are getting returned by the Script Include function? 

Also, I have a slightly unrelated question. Is there a particular reason to be using getXMLWait() instead of getXMLAnswer() maybe?

Community Alums
Not applicable

Hi @Arpan Baishya 

 

I have got the output expected in syslog table.

 

Task.PNG

 

log.PNG

 

Regards

Suman P.

Hi,

Great to hear that. So, is your issue resolved, or are the RITMs not getting populated yet?

 

In case your issue isn't resolved, one thing that I would like to know is if you are submitting both incidents and RITMs at the same time. Would it be possible to merge the two Client Scripts so that you could perform the field update at one go? 

Community Alums
Not applicable

Hi @Arpan Baishya ,

My issue isn't resolved. RITM's are not getting populated into Work notes. In the screenshot you can see only incidents. Maybe I will try merging both the client scripts into one and check.

Regards

Suman P.