List collector value not removed from script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-09-2025 12:24 PM
Hi,
I am trying to remove values from list collector through onsubmit client script.
I have a script include which returns what values are to be removed from the list collector on submit. I tried below script but no luck. I am getting the expected alerts. What am i missing ?
var mrvsValues = g_form.getValue('list_the_existing_machine_name');
var mrvsSelectedUsers = [];
var rows = JSON.parse(mrvsValues);
for (var i = 0; i < rows.length; i++) {
var val = rows[i].req_for;
mrvsSelectedUsers.push(val.toString());
}
var userListCollector = g_form.getValue('requested_for');
var listArr = userListCollector.split(',');
alert('listArr ' + listArr); //Getting expected alert
var gaGetUserDetails = new GlideAjax('GetUserDetails');
gaGetUserDetails.addParam('sysparm_name', 'getUserDetails');
gaGetUserDetails.addParam('sysparm_listusers', listArr);
gaGetUserDetails.addParam('sysparm_mrvsusers', mrvsSelectedUsers);
gaGetUserDetails.getXMLAnswer(parseAnswer);
function parseAnswer(response) {
//returned value should be array of sysids of user to be removed from list
var answer = response;
var test = answer.split(',');
alert('anser1 = ' + test); ///getting expected alert
//if (answer.length > 0) {
for (var a = 0; a < test.length; a++) {
var valueToRemove = test[a];
alert('Value to remove ' + valueToRemove);
var index = listArr.indexOf(valueToRemove);
alert('index ' + index); //getting expected index value
if (index !== -1) {
listArr.splice(index, 1); //remove value
}
}
alert('listArr100 ' + listArr); //getting expected value
g_form.setValue('requested_for', listArr.join(','));
return false; //This is false only for testing purpose.
There is no change in the selected values before / after clicking submit.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-10-2025 07:49 PM
Hope you are doing good.
Did my reply answer your question?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-10-2025 10:59 AM
Hi @Ankur Bawiskar , I am trying the synchronous glideajax using getxmlwait but still it is not working. As per business requirement, catalog is not required on portal hence synchronous call would work in this case but the code is not working.
Below is the code that i am trying to update list collector before submit:
function onSubmit() {
var mrvsValues = g_form.getValue('list_the_existing_machine_name');
var mrvsSelectedUsers = [];
var rows = JSON.parse(mrvsValues);
for (var i = 0; i < rows.length; i++) {
var val = rows[i].req_for;
mrvsSelectedUsers.push(val.toString());
}
var userListCollector = g_form.getValue('requested_for');
var listArr = userListCollector.split(',');
var gaGetUserDetails = new GlideAjax('GetUserDetails');
gaGetUserDetails.addParam('sysparm_name', 'getUserDetails');
gaGetUserDetails.addParam('sysparm_listusers', listArr);
gaGetUserDetails.addParam('sysparm_mrvsusers', mrvsSelectedUsers);
gaGetUserDetails.getXMLWait();
answer = gaGetUserDetails.getAnswer();
var test = answer.split(',');
for (var a = 0; a < test.length; a++) {
var valueToRemove = test[a];
alert('Value to remove ' + valueToRemove); //expected alert is coming
var index = listArr.indexOf(valueToRemove);
if (index !== -1) { //valueToRemove was found in array
listArr.splice(index, 1); //remove array member from this array
}
}
alert(listArr); //expected alert is coming.
g_form.setValue('requested_for', listArr.join(','));
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-09-2025 11:58 PM
I tried using xmlwait as well but No luck !
var mrvsValues = g_form.getValue('list_the_existing_machine_name');
var mrvsSelectedUsers = [];
var rows = JSON.parse(mrvsValues);
for (var i = 0; i < rows.length; i++) {
var val = rows[i].req_for;
mrvsSelectedUsers.push(val.toString());
}
var userListCollector = g_form.getValue('requested_for');
var listArr = userListCollector.split(',');
var gaGetUserDetails = new GlideAjax('GetUserDetails');
gaGetUserDetails.addParam('sysparm_name', 'getUserDetails');
gaGetUserDetails.addParam('sysparm_listusers', listArr);
gaGetUserDetails.addParam('sysparm_mrvsusers', mrvsSelectedUsers);
gaGetUserDetails.getXMLWait();
answer = gaGetUserDetails.getAnswer();
var test = answer.split(',');
//if (answer.length > 0) {
for (var a = 0; a < test.length; a++) {
var valueToRemove = test[a];
alert('Value to remove ' + valueToRemove);
var index = listArr.indexOf(valueToRemove);
alert('index ' + index);
if (index !== -1) { //valueToRemove was found in array
listArr.splice(index, 1); //remove array member from this array
}
}
g_form.setValue('requested_for', listArr.join(','));