script include response return null

chet shian
Tera Contributor

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?

chetshian_0-1705564302601.png

 

chetshian_1-1705564501254.png

 

Code on client side

 

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(validateDuplicate);
    return false;


    function validateDuplicate(answer) {

        //var resp = response.responseXML.documentElement.getAttribute("answer");


        g_scratchpad.isFormValid = true;
       

        alert(answer);
        if (answer == 'false') {
            g_form.submit(actionName);
            var actionName = g_form.getActionName();
            g_form.addErrorMessage('Duplicate user with same project site and personnel type found');

            return false;
        } else {
            g_form.submit(actionName);
            actionName = g_form.getActionName();
            alert('another alert');
            return true;

        }




    }
}
 
and code on backend. 
 
var XgetCC_Personnel = Class.create();
XgetCC_Personnel.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

    validateDuplicateRec: function() {
        gs.log("enter to the backend");
        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 = 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.query();
        if (gr_cc_personnel.next()) {
            answer = true;
        }
        return answer;
        // var result = "";
        // 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.addActiveQuery();

        // 3. Execute query
        //  gr_cc_personnel.query();    
        //  if (gr_cc_personnel.next()) {
        //      result = "true";
        //  }
        //   gs.info("Chetan-2 inside validate form Result is " + result);
        //  return result;




    },
    type: 'XgetCC_Personnel'
});

 

10 REPLIES 10

Jagadish Sanadi
Kilo Sage
Hello Chet,
 
Please try below code
 
    function validateDuplicate(answer) {

 

        //var resp = answer;



        g_scratchpad.isFormValid = true;
       

 

        alert(answer);
        if (answer == 'false') {
            g_form.submit(actionName);
            var actionName = g_form.getActionName();
            g_form.addErrorMessage('Duplicate user with same project site and personnel type found');

 

            return false;
        } else {
            g_form.submit(actionName);
            actionName = g_form.getActionName();
            alert('another alert');
            return true;

 

        }
 
still you didn't get output then write below script include code in background script and validate.
 
 validateDuplicateRec: function() {
        gs.log("enter to the backend");
        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 = 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.query();
        if (gr_cc_personnel.next()) {
            answer = "true";
        }
 
Please mark my answer helpful if I have answered you
 
 

Thanks Jagadish, I don't see any differences between the code with my code. 
I tried and it did not work.    alert(answer); <-- return a null 

 

 function validateDuplicate(answer) {

 

        //var resp = answer;



        g_scratchpad.isFormValid = true;
       

 

        alert(answer);
        if (answer == 'false') {
            g_form.submit(actionName);
            var actionName = g_form.getActionName();
            g_form.addErrorMessage('Duplicate user with same project site and personnel type found');

 

            return false;
        } else {
            g_form.submit(actionName);
            actionName = g_form.getActionName();
            alert('another alert');
            return true;

 

        }

Harish KM
Kilo Patron
Kilo Patron

Hi @chet shian your script include is returning null due to below error.

your gliderecord has object gr, but below queries your passing gr_cc_personnel. It must be gr.

 

var gr = 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.query();
if (gr_cc_personnel.next()) {
answer = true;
}
return answer;

Regards
Harish


I am getting null return after I replaced gr_cc_personnel with gr
@Harish KM wrote:

Hi @chet shian your script include is returning null due to below error.

your gliderecord has object gr, but below queries your passing gr_cc_personnel. It must be gr.

 

 

 

var gr = new GlideRecordSecure('x_wohp_new_hire_ap_nac_c_cc_personnel');
gr.addQuery('personnel_type', personneltype);
gr.addQuery('employee_id', employeeid);
gr.addQuery('project_site', projectsite);
gr.query();
if (gr.next()) {
answer = true;
}
return answer;