script include response return null
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-17-2024 11:57 PM
Hi All,
I'd like to validate multiple fields, all of which must be unique. I handle the validation on Onsubmit event. Below are my settings on the client and backend.
I can't get things to function, and the response from the server side returned null.
What's wrong with my code and settings?
Code on client side

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-19-2024 12:49 AM
Hi @chet shian there is another error your calling wrong script include name in client script
var ga = new GlideAjax('getCC_Personnel');// change this to XgetCC_Personnel as per your scriptinclude
ga.addParam('sysparm_name', 'validateDuplicateRec');
ga.addParam('sysparm_personnel_type', personnel_type);
ga.addParam('sysparm_employee_id', employee_id);
ga.addParam('sysparm_Project_site', Project_site);
ga.getXMLAnswer(validateDuplicate);
return false;
Harish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-19-2024 12:42 AM - edited 01-23-2024 08:08 PM
Hi @chet shian
1. In your script include, the initiated variable named gr while you're using gr_cc_personnel
var gr = new GlideRecordSecure('x_wohp_new_hire_ap_nac_c_cc_personnel'); //gr
gr_cc_personnel.addQuery('personnel_type', personneltype); //gr_cc_personnel
2. You're calling the GlideAjax with the wrong script include name.
function onSubmit() {
//Type appropriate comment here, and begin script below
if (g_scratchpad.isFormValid) { //using g_scratchpad as Async GlideAjax does not work with Onsubmit
return true;
}
var personnel_type = g_form.getValue('personnel_type').trim();
var employee_id = g_form.getValue('employee_id').trim();
var project_site = g_form.getValue('project_site').trim();
var actionName = g_form.getActionName();
var ga = new GlideAjax('XgetCC_Personnel');
ga.addParam('sysparm_name', 'validateDuplicateRec');
ga.addParam('sysparm_personnel_type', personnel_type);
ga.addParam('sysparm_employee_id', employee_id);
ga.addParam('sysparm_project_site', project_site);
ga.getXMLAnswer(function(answer){
if (answer == 'true') {
g_form.addErrorMessage('Duplicate user with same project site and personnel type found');
return false;
}
g_scratchpad.isFormValid = true;
g_form.submit(actionName);
});
return false;
}
var XgetCC_Personnel = Class.create();
XgetCC_Personnel.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateDuplicateRec: function() {
var personneltype = this.getParameter('sysparm_personnel_type');
var employeeid = this.getParameter('sysparm_employee_id');
var projectsite = this.getParameter('sysparm_project_site');
var gr_cc_personnel = new GlideRecordSecure('x_wohp_new_hire_ap_nac_c_cc_personnel');
gr_cc_personnel.addQuery('personnel_type', personneltype);
gr_cc_personnel.addQuery('employee_id', employeeid);
gr_cc_personnel.addQuery('project_site', projectsite);
gr_cc_personnel.setLimit(1);
gr_cc_personnel.query();
return gr_cc_personnel.hasNext();
},
type: 'XgetCC_Personnel'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-23-2024 08:08 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-23-2024 09:25 PM
Thanks Timi,
I took your suggestion by using XgetCC_Personnel instead me name of the include script I got an error "Access to Script Include NHA_getCC_Personnel blocked from scope: x_wohp_new_hire_ap"
so I changed to the name of script include to get rid of this error.
The rest I applied with your suggested script but It did not work.
I printed with the alert on the response. I got a null returned value,
var ga = new GlideAjax('getCC_Personnel');
var NHA_getCC_Personnel = Class.create();
NHA_getCC_Personnel.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
validateDuplicateRec: function() {
gs.info("test", "testsource");
gs.info("enter to the backend");
gs.info("test", "testsource");
var answer = false;
var personneltype = this.getParameter('sysparm_personnel_type');
var employeeid = this.getParameter('sysparm_employee_id');
var projectsite = this.getParameter('sysparm_Project_site');
var gr_cc_personnel = new GlideRecordSecure('x_wohp_new_hire_ap_nac_c_cc_personnel');
gr_cc_personnel.addQuery('personnel_type', personneltype);
gr_cc_personnel.addQuery('employee_id', employeeid);
gr_cc_personnel.addQuery('project_site', projectsite);
gr_cc_personnel.setLimit(1);
gr_cc_personnel.query();
return gr_cc_personnel.hasNext();
},
type: 'NHA_getCC_Personnel'
});
function onSubmit() {
//Type appropriate comment here, and begin script below
if (g_scratchpad.isFormValid) { //using g_scratchpad as Async GlideAjax does not work with Onsubmit
return true;
}
var personnel_type = g_form.getValue('personnel_type').trim();
var employee_id = g_form.getValue('employee_id').trim();
var Project_site = g_form.getValue('project_site').trim();
var actionName = g_form.getActionName();
var ga = new GlideAjax('getCC_Personnel');
ga.addParam('sysparm_name', 'validateDuplicateRec');
ga.addParam('sysparm_personnel_type', personnel_type);
ga.addParam('sysparm_employee_id', employee_id);
ga.addParam('sysparm_Project_site', Project_site);
ga.getXMLAnswer(function(answer){
if (answer == 'true') {
g_form.addErrorMessage('Duplicate user with same project site and personnel type found');
return false;
}
alert(answer);
g_scratchpad.isFormValid = true;
g_form.submit(actionName);
});
return false;
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-19-2024 01:13 AM
Hi,
Please check below things:
1. Use coplete API name in your Client script for GlideAjax API.
var ga = new GlideAjax('getCC_Personnel');
instead use
var ga = new GlideAjax('x_wohp_new_hire_ap.getCC_Personnel');
2. Put logs in your Script include to see if it is being called and few logs to check what all loops it is entering and one log just before final return statement to print the value of answer.
Thanks
Anil Lande