Asynchronous GlideAjax in onSubmit not working
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-22-2017 09:48 PM
Hi,
I have a single line variable in sp which i need to validate whether this value exists in the table record. if it exists, it will prevent the form from submmiting and shows the error message below the variable.
I am using the following in catalog client script with script include using async glideajax. can anyone help to advise as i cant seem to get the answer to stop my form submission? Thank you!
g_form.hideFieldMsg('name');
var validate = false;
if(g_form.getValue('name') != '')
{
checkName();
}
if(validate == false)
{
g_form.submitted = false;
return false;
}
else {return true;}
}
function checkName(){
var ga = new GlideAjax('nameAjax');
ga.addParam('sysparm_name','checkname');
ga.addParam('sysparm_namelist',g_form.getValue('name'));
validate = ga.getXML(serverResponse);
}
function serverResponse(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer == 'true')
{
g_form.showFieldMsg('name','name Exists','error');
validate = false;
return false;
}
else{
validate = true;
return true;}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-23-2017 01:01 AM
Hi Surya,
I tried your code but not able to get answer from my script includes.
alert(ga.getAnswer()); returns null value.i did a gs.info and confirmed that i am returning true on my script includes.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-23-2017 01:03 AM
Sorry. forgot to add that my script includes is client callable and was able to get answer from script includes using async ajax before i changed my code.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-23-2017 01:05 AM
Can you provide your server side code?
ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-23-2017 01:20 AM
Hi Paul,
my script include as below. client callable is ticked and acessible from all application scope.
var nameAjax = Class.create();
nameAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkname:function(){
gs.info('here'); // this was printed in log.
var name = this.getParameter('sysparm_namelist');
var returnValue = '';
var gr = new GlideRecord('u_name_record');
gr.get(name);
gr.query();
if(gr.getRowCount() == 0)
{
returnValue = 'false';
}
else
{
returnValue = 'true';
}
gs.info(returnValue); // this returns true which means there is such record.
return returnValue;
},
type: 'nameAjax'
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-23-2017 01:42 AM
I think it might be best to go with a simple solution first.
GlideAjax may not be the best choice for this scenario (onSubmit), especially if you're new to scripting.
Also, if this is for a scoped app, GlideAjax is off the table completely for this scenario.
Refactor this before going into production.
g_form.hideFieldMsg('name');
var validate = false;
if(g_form.getValue('name') != ''){
validate = checkName();
}
if(validate == false) {
g_form.submitted = false;
return false;
} else {
return true;
}
function checkName() {
var gr = new GlideRecord('u_name_record');
return gr.get(g_form.getValue('name'));
}
ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022