Need assistance with onsubmit client script

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-12-2023 09:17 PM
Hi all,
Instead of getXML(), I want to use getXMLWait(), Can you please help, I dont knoe the syntax how to use it. FYR: answer1 is returning an array.
function onSubmit() {
if (g_scratchpad.isFormValid) {
return true;
}
var flagArray = [];
var flag = 'false';
var name1 = g_form.getValue('papplication_name');
var ga = new GlideAjax('global.ClientScriptName');
ga.addParam('sysparm_name', 'getVariablefromItem');
ga.addParam('sysparm_catupdte', name1);
ga.getXML(catupdateResponse1);
return false;
function catupdateResponse1(response1) {
var answer1 = response1.responseXML.documentElement.getAttribute("answer");
answer1 = JSON.parse(answer1);
for (var i = 0; i < answer1.length; i++) {
var namefield = answer1[i].toString();
if (g_form.getValue(namefield)) {
flag = 'true';
break;
}
}
if (flag == 'false') {
g_form.addErrorMessage('No need to submit');
return false;
}
var actionName = g_form.getActionName();
g_scratchpad.isFormValid = true;
g_form.submit(actionName);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-12-2023 09:23 PM
Hello @Community Alums
function onSubmit() {
if (g_scratchpad.isFormValid) {
return true;
}
var flagArray = [];
var flag = 'false';
var name1 = g_form.getValue('papplication_name');
var ga = new GlideAjax('global.ClientScriptName');
ga.addParam('sysparm_name', 'getVariablefromItem');
ga.addParam('sysparm_catupdte', name1);
ga.getXMLWait(catupdateResponse1);
return false;
function catupdateResponse1(response1) {
var answer1 = response1.responseXML.documentElement.getAttribute("answer");
answer1 = JSON.parse(answer1);
for (var i = 0; i < answer1.length; i++) {
var namefield = answer1[i].toString();
if (g_form.getValue(namefield)) {
flag = 'true';
break;
}
}
if (flag == 'false') {
g_form.addErrorMessage('No need to submit');
return false;
}
var actionName = g_form.getActionName();
g_scratchpad.isFormValid = true;
g_form.submit(actionName);
}
}
Plz mark my solution as Accept, If you find it helpful.
Regards,
Samaksh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-12-2023 09:24 PM
Hi @Community Alums ,
To use `getXMLWait()` instead of `getXML()` in your ServiceNow client script, you'll need to make some adjustments to your existing code. The `getXMLWait()` method is synchronous and will block until the response is received. Here's an updated version of your script:
function onSubmit() {
if (g_scratchpad.isFormValid) {
return true;
}
var flagArray = [];
var flag = 'false';
var name1 = g_form.getValue('papplication_name');
var ga = new GlideAjax('global.ClientScriptName');
ga.addParam('sysparm_name', 'getVariablefromItem');
ga.addParam('sysparm_catupdte', name1);
// Use getXMLWait() instead of getXML()
var response1 = ga.getXMLWait();
catupdateResponse1(response1);
return false;
function catupdateResponse1(response1) {
var answer1 = response1.responseXML.documentElement.getAttribute("answer");
answer1 = JSON.parse(answer1);
for (var i = 0; i < answer1.length; i++) {
var namefield = answer1[i].toString();
if (g_form.getValue(namefield)) {
flag = 'true';
break;
}
}
if (flag == 'false') {
g_form.addErrorMessage('No need to submit');
return false;
}
var actionName = g_form.getActionName();
g_scratchpad.isFormValid = true;
g_form.submit(actionName);
}
}
In this version:
- The `getXML()` method is replaced with `getXMLWait()`.
- The `catupdateResponse1` function is still used as the callback for processing the response.
- The rest of the code remains largely unchanged.
Keep in mind that using `getXMLWait()` is a synchronous operation, and it may impact the user experience if there is a delay in the response. Ensure that it aligns with your application's requirements and performance considerations.
Thanks,
Danish