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

Community Alums
Not applicable

Hi Vishal,

 

Thank you so much for being with me so patiently on this. I have one more field also. This is for Change Requests. I have updated it accordingly but i am not getting any output.

 

 

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");

	var chg = g_form.getValue("change_requests_submitted_by_itam");

    /*Inc & Ritm both*/

    var ga = new GlideAjax("listCollectorWNClass");

    ga.addParam("sysparm_name", "listCollectorIncRitmFunction");

    ga.addParam("sysparm_ritmId", rq_item);

	ga.addParam("sysparm_changeID", chg);

    ga.addParam("sysparm_incId", inc);

    ga.getXMLWait();

    /*Set values*/

    /*Put some alerts- info messages to check what you are receiving from script include*/

  //  g_form.addInfoMessage('Response=' + JSON.parse(ga.getAnswer()));

    var answer = JSON.parse(ga.getAnswer());

    var setValues = "Incident(s) :" + answer.incident.toString() + '\n' + "Service Request(s) :" + answer.ritm.toString() + '\n' + "Change Request(s) :" + answer.change.toString();

    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 changeArr = this.getParameter('sysparm_changeID').toString.split(',');

        var newIncArray = [];

        var newritmArray = [];

        var newChangeArr = [];

        var object = {

            incident: '',

            ritm: '',

            change: ''

        };



        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 < changeArr.length; i++) {

            var change1 = new GlideRecord('change_request');

            if (change1.get(changeArr[i].toString())) {

                newChangeArr.push(change1.number);

            }

        }

        object.change = newChangeArr.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);

    },

    type: 'listCollectorWNClass'
});

 

 

 

output.PNG

 

Notes.PNG

 

Regards

Suman P.

In script include, 

In second for loop I guess you are glide recording on "incident" table instead of "change_request".

Change it ...you will get your output.

 

Vishal Birajdar
ServiceNow Developer

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

Community Alums
Not applicable

Hi @Vishal Birajdar 

That was in a hurry and i updated it and tested it. Still no output. I have already attached the code in the previous message.

Regards

Suman P.

Hi @Community Alums 

 

The code looks good.

Can you put some logs in script include, to check if you are getting change numbers in array.

Also check backend name of Change table.

 

Vishal Birajdar
ServiceNow Developer

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

Community Alums
Not applicable

Hi @Vishal Birajdar 

It didn't work. it is still showing blank for Change Requests. I checked the backend name for change request is change_request. Not sure what is going on. Can you please look into it.

Regards

Suman P.