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

Vishal Birajdar
Giga Sage

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 :[],

}

 

  

 

Vishal Birajdar
ServiceNow Developer

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

Community Alums
Not applicable

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.

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

   
}

 

 

Vishal Birajdar
ServiceNow Developer

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

Community Alums
Not applicable

Hi @Vishal Birajdar 

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

 

null.PNG

 

Regards

Suman P.

 

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