Passing array from script include to client script does not work

EH Desev
Tera Contributor

Hello experts,

 

I need to implement the following functionality – when the user selects a Business Service in an incident, display an alert in the form with all incidents which have the same Business Service with Priority 1(Critical) and are not "Resolved", "Closed" or "Cancelled"". Below is the client script and sript include I use. The problem is that I am not able to find the propper way to pass the array to the client script so I can use it. Can you please have a look were is my mistake. Thanks!

 

Client script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    var userName = new GlideAjax('TaskThree');
    userName.addParam('sysparm_name', 'criticalIncidents');
    userName.addParam('sysparm_var1', g_form.getValue('business_service'));
    userName.getXMLAnswer(callback);

    function callback(response) {
        var answer = response;

        alert(answer);

    }

}

 Script include:

var TaskThree = Class.create();
TaskThree.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    criticalIncidents: function() {

        var bs = this.getParameter('sysparm_var1');
        var incidentsArr = [];
   
        var gr = new GlideRecord('incident');
        gr.addQuery('business_service', bs);
        gr.addQuery('priority', 1);
        gr.addEncodedQuery('incident_stateNOT IN6,7,8');
        gr.query();
        while (gr.next()) {

            var JsonObj = {};
            JsonObj.incidens = gr.number.toString();
            incidentsArr.push(JSON.stringify(JsonObj));
        
            return incidentsArr;                
        }
     
    },

    type: 'TaskThree'
});

 

1 ACCEPTED SOLUTION

Mike Patel
Tera Sage

Change script includes to below

 

var TaskThree = Class.create();
TaskThree.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    criticalIncidents: function() {

        var bs = this.getParameter('sysparm_var1');
        var incidentsArr = [];

        var sr = new GlideRecord('incident');
        sr.addQuery('business_service', bs);
        sr.addQuery('priority', 1);
        sr.addEncodedQuery('incident_stateNOT IN6,7,8');
        sr.query();
        while (sr.next()) {
            incidentsArr.push(sr.number.toString());
        }
        return incidentsArr.toString();
    },

    type: 'TaskThree'
});

 

View solution in original post

4 REPLIES 4

Mike Patel
Tera Sage

Change script includes to below

 

var TaskThree = Class.create();
TaskThree.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    criticalIncidents: function() {

        var bs = this.getParameter('sysparm_var1');
        var incidentsArr = [];

        var sr = new GlideRecord('incident');
        sr.addQuery('business_service', bs);
        sr.addQuery('priority', 1);
        sr.addEncodedQuery('incident_stateNOT IN6,7,8');
        sr.query();
        while (sr.next()) {
            incidentsArr.push(sr.number.toString());
        }
        return incidentsArr.toString();
    },

    type: 'TaskThree'
});

 

Thanks for this solution, Mike! It solved my problem.

Community Alums
Not applicable

Hi @EH Desev 

 

Please use the below code.

 

Client Script: 

 

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    var userName = new GlideAjax('TaskThree');
    userName.addParam('sysparm_name', 'criticalIncidents');
    userName.addParam('sysparm_var1', g_form.getValue('business_service'));
    userName.getXMLAnswer(callback);

    function callback(response) {
        var answer = response;

        alert(answer);

    }

}

 

 

 

Server Script:

 

 

var TaskThree = Class.create();
TaskThree.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    criticalIncidents: function() {

        var bs = this.getParameter('sysparm_var1');
        var incidentsArr = [];

        var sr = new GlideRecord('incident');
        sr.addQuery('business_service', bs);
        sr.addQuery('priority', 1);
        sr.addEncodedQuery('incident_stateNOT IN6,7,8');
        sr.query();
        while (sr.next()) {
            incidentsArr.push(sr.number.toString());
        }
        return incidentsArr.toString();
    },

    type: 'TaskThree'
});

 

 

 

Mark the comment as a correct answer and also helpful if this has helped to solve the problem

Krishna Sharma

Rick62
Tera Expert

@EH Desev,

you can only return a string.