Problem with pushing the Object into array

ursnani
Giga Guru

Hi All,

 

I ma facing problem with pushing object into array its replacing all the Objects with the last object. 

I am using onChange Client script and calling Script include and returning the Object to Client side

 

below are code snippets, please suggest

 

 

Script Inlcude

getItemDetails: function() {

        //var reqNum = this.getParameter('req_ritmValue');
        var req = this.getParameter('req_ritmValue');
        gs.log('Request item sysid == ' + req);
        var ItemObj = {};
        var Itemdetails = [];

        var getReqItem = new GlideRecord('sc_req_item');
        getReqItem.addQuery('cat_item', req);
        getReqItem.query();
        while (getReqItem.next()) {
            ItemObj.reqnumber = getReqItem.getValue('number');
            ItemObj.reqrequest = getReqItem.getDisplayValue('request');
            ItemObj.reqitem = getReqItem.getDisplayValue('cat_item');

            Itemdetails.push(ItemObj);

        }
        gs.log('Oject == ' + JSON.stringify(Itemdetails));

        return JSON.stringify(Itemdetails);

    },

onchage Client Script:
var getRITMDetails = new GlideAjax('global.TestScript');
    getRITMDetails.addParam('sysparm_name', 'getItemDetails');
    getRITMDetails.addParam('req_ritmValue', newValue);
    getRITMDetails.getXML(PopulateMRVS)

    function PopulateMRVS(response) {

        var result = response.responseXML.documentElement.getAttribute("answer");

        //alert('Value == ' +JSON.stringify(result));
		alert('Object == '+result)
}

Any help is much appreciated.

 

Thanks in Advance

 

1 ACCEPTED SOLUTION

Sandeep Rajput
Tera Patron
Tera Patron

@ursnani Please update your script as follows.

 

getItemDetails: function() {

        //var reqNum = this.getParameter('req_ritmValue');
        var req = this.getParameter('req_ritmValue');
        gs.log('Request item sysid == ' + req);
        var Itemdetails = [];

        var getReqItem = new GlideRecord('sc_req_item');
        getReqItem.addQuery('cat_item', req);
        getReqItem.query();
        while (getReqItem.next()) {
             var ItemObj = {}; //Initalise the object here
            ItemObj.reqnumber = getReqItem.getValue('number');
            ItemObj.reqrequest = getReqItem.getDisplayValue('request');
            ItemObj.reqitem = getReqItem.getDisplayValue('cat_item');

            Itemdetails.push(ItemObj);

        }
        gs.log('Oject == ' + JSON.stringify(Itemdetails));

        return JSON.stringify(Itemdetails);

    },

This will solve the issue of object replication in array.

 

Please mark this answer helpful and correct if it manages to address your issue.

View solution in original post

3 REPLIES 3

Sandeep Rajput
Tera Patron
Tera Patron

@ursnani Please update your script as follows.

 

getItemDetails: function() {

        //var reqNum = this.getParameter('req_ritmValue');
        var req = this.getParameter('req_ritmValue');
        gs.log('Request item sysid == ' + req);
        var Itemdetails = [];

        var getReqItem = new GlideRecord('sc_req_item');
        getReqItem.addQuery('cat_item', req);
        getReqItem.query();
        while (getReqItem.next()) {
             var ItemObj = {}; //Initalise the object here
            ItemObj.reqnumber = getReqItem.getValue('number');
            ItemObj.reqrequest = getReqItem.getDisplayValue('request');
            ItemObj.reqitem = getReqItem.getDisplayValue('cat_item');

            Itemdetails.push(ItemObj);

        }
        gs.log('Oject == ' + JSON.stringify(Itemdetails));

        return JSON.stringify(Itemdetails);

    },

This will solve the issue of object replication in array.

 

Please mark this answer helpful and correct if it manages to address your issue.

Thanks for the quick reply and it did the trick.

Tai Vu
Kilo Patron
Kilo Patron

Hi @ursnani 

Try the below approach

 

getItemDetails: function() {

    //var reqNum = this.getParameter('req_ritmValue');
    var req = this.getParameter('req_ritmValue');
    gs.log('Request item sysid == ' + req);
    var Itemdetails = [];

    var getReqItem = new GlideRecord('sc_req_item');
    getReqItem.addQuery('cat_item', req);
    getReqItem.query();
    while (getReqItem.next()) {
        var ItemObj = {};
        ItemObj.reqnumber = getReqItem.getValue('number');
        ItemObj.reqrequest = getReqItem.getDisplayValue('request');
        ItemObj.reqitem = getReqItem.getDisplayValue('cat_item');

        Itemdetails.push(JSON.stringify(ItemObj));

    }
    gs.log('Oject == ' + JSON.stringify(Itemdetails));

    return JSON.stringify(Itemdetails);

},

 

 

 

    var getRITMDetails = new GlideAjax('global.TestScript');
    getRITMDetails.addParam('sysparm_name', 'getItemDetails');
    getRITMDetails.addParam('req_ritmValue', newValue);
    getRITMDetails.getXML(PopulateMRVS)

    function PopulateMRVS(response) {

        var result = response.responseXML.documentElement.getAttribute("answer");
		var arrItem = JSON.parse(result);
		for (var i in arrItem){
			var item = JSON.parse(arrItem[i]);
			alert(item);
		}
    }

 

 

Let me know if it works for you!

 

Cheers,

Tai Vu