Need help in debugging

abjaffrey
Giga Guru

Hi all,

 

Need your help in what could be wrong in the below code.

the expected result is when assignment group gets changed the assigned_to field value should be updated with a random person from the group however im not getting the result.

 

Appreciate your help.

 

SI:

 

Please consider only assignMembers function

 

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

    grpMember : function(){
        var count = '';
        var groupName = this.getParameter('sysparm_assignment_group');
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group',groupName);
        gr.query();

        if(gr.next()){
            count = gr.getRowCount();
        }
        else{
            count = 'There are no Group Member';
        }
        return count;
    },

    assignMembers : function(){
        var grMembers = [];
        var groupID = this.getParameter('sysparm_group_name');
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group',groupID);
        gr.query();

        while(gr.next()){
            var member = {};
            member.sys_id = gr.user.toString();
            member.name = gr.user.getDisplayValue();
            grMembers.push(member);
        }
        return JSON.stringify(grMembers);

    },

    showGroup : function(getCategory){
        if(getCategory == 'network'){
            return 'sys_idIN' + gs.getProperty('getNetwork') + '.' + gs.getProperty('getNetworkCab');
        }
        else if(getCategory == 'hardware'){
            return 'sys_idIN' + gs.getProperty('getHardware');
        }
    },

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

    var ga = new GlideAjax('getGroupMember');
    ga.addParam('sysparm', 'assignMembers');
    ga.addParam('sysparm_group_name', g_form.getValue('assignment_group'));

    ga.getXML(groupMember);

    function groupMember(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        var member = JSON.parse(answer);
        if (member.length > 0) {
            var randomNum = Math.floor(Math.random() * member.length);
            g_form.addInfoMessage('The random value is ' +randomNum);
            g_form.setValue('assigned_to', member[randomNum].name);
        }
        else {
            g_form.setValue('assigned_to', '');
        }
    }
}
1 ACCEPTED SOLUTION

Thanks, as you can see, there is an error. Cannot read properties of null (reading length). Also before that error you can see null was  logged, so member is null. Looking at your GlideAjax call again, you need to use sysparm_name when specifying the method to call, not just sysparm:

 ga.addParam('sysparm_name', 'assignMembers'); // update this to be 'sysparm_name' instead of just 'sysparm'

View solution in original post

16 REPLIES 16

@Ankur Bawiskar 

 

From Script Include we are using while loop to send an array of users in a group and then we set a random value from the array in client script -- this is the logic but unable to execute.

Ankur Bawiskar
Tera Patron
Tera Patron

@abjaffrey 

try the suggestion shared by Nick and share us the updates.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader