Using Onload script not getting response when loading multiple records at a time

nandini29
Tera Contributor

Hi All,

I am using script incude in onload client script on change request table.When loading multiple records at a time not getting response for few records(below alert is not triggering), I guess script include is not yet called.

 Script I used

function onLoad() {

    g_form.setSectionDisplay('post_implementationreview', false);

    var change_type = g_form.getValue('type');

    g_form.setDisplay('u_ready_for_review', true);

    g_form.setDisplay('u_impact_assessment', true);

    g_form.setDisplay('u_next_steps', true);

    if (change_type == 'emergency') {

        g_form.setDisplay('u_reason_for_emergency', true);

        g_form.setDisplay('u_explanation_of_the_emergency', true);

        g_form.setDisplay('u_reason_for_failure', false);

        g_form.setDisplay('u_root_cause_performed', true);

    } else if (change_type == 'standard' || change_type == 'normal') {

        //alert('Standard change');

        g_form.setDisplay('u_reason_for_failure', true);

        g_form.setDisplay('u_reason_for_emergency', false);

        g_form.setDisplay('u_explanation_of_the_emergency', false);

        g_form.setDisplay('u_root_cause_performed', false);

    } 

    var sysID = g_form.getUniqueValue();

    var ga = new GlideAjax('CheckReviewTaskExists');

    ga.addParam('sysparm_name', 'reviewTaskExists');

    ga.addParam('sysparm_change_id', sysID);

    ga.getXMLAnswer(function(response) {

        alert("True " + response);

        if (response == 'true') {

            g_form.setMandatory('u_ready_for_review', true);

            g_form.setMandatory('u_impact_assessment', true);

            g_form.setMandatory('u_next_steps', true);

            if (change_type == 'emergency') {

                g_form.setMandatory('u_reason_for_emergency', true);

                g_form.setMandatory('u_explanation_of_the_emergency', true);

                g_form.setMandatory('u_root_cause_performed', true);

            } else if (change_type == 'standard' || change_type == 'normal') {

                g_form.setMandatory('u_reason_for_failure', true);

            }

            g_form.setSectionDisplay('post_implementationreview', true);

        }

    });

}

Please help me on this

Thanks,
Nandini

1 REPLY 1

Its_Azar
Tera Guru
Tera Guru

Hi there @nandini29 

 

This happens because onLoad runs before the form fully loads all records, so your GlideAjax may not always finish when multiple forms load at once.

Try wrapping your GlideAjax call in a short timeout or move it inside g_form.isNewRecord() or g_form.isLoading check. Example fix:

 

function onLoad() {
    if (g_form.isLoading()) return;

    setTimeout(function() {
        var sysID = g_form.getUniqueValue();
        var ga = new GlideAjax('CheckReviewTaskExists');
        ga.addParam('sysparm_name', 'reviewTaskExists');
        ga.addParam('sysparm_change_id', sysID);
        ga.getXMLAnswer(function(response) {
            if (response == 'true') {
                g_form.setSectionDisplay('post_implementationreview', true);
            }
        });
    }, 500);
}

The delay ensures the form and client session are ready before your script runs

 

 

☑️ If this helped, please mark it as Helpful or Accept Solution so others can find the answer too.

Kind Regards,

Mohamed Azarudeen Z

Developer @ KPMG