Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

UI Page not closing in agent workspace

Palak Midha
Tera Contributor

Hi All,

I have configured a UI Page in Agent Workspace, but the pop-up doesn't close automatically when clicking on "OK" , after clicking OK it is opening the URL I wanted.

Client script:

 

function closeModal() {
    GlideDialogWindow.get().destroy();
    return false;
}

function openUrl(url) {
    this.open(url, "_blank");

}

function saveValues(mthis) {


    var butn = gel('ok_button').disabled = true;
    var table = '${JS:sysparm_sys_table_name}';
    var s = [];
    var emv = emailvals.querySelectorAll('input[type="checkbox"]');
    var sysID = '${JS:sysparm_sys_source_id}';
    [].forEach.call(emv, function(e) {
        if (e.checked)
            s.push(e.name);
    });

    var url = "/my_url"
    var gajax = new GlideAjax('global.script_include');
    gajax.addParam('sysparm_name', 'function');
    gajax.addParam('sysparm_ids', s.join(','));

    gajax.getXML(function(r) {
        openUrl(url);


    });

    return true;
   
}

 

 

3 REPLIES 3

Ratnakar7
Mega Sage

Hi @Palak Midha ,

 

It looks like the issue is with the saveValues function. In this function, you are calling the openUrl function after the AJAX call completes successfully, which is opening the URL in a new tab. However, you are not calling the closeModal function to close the pop-up.

To fix the issue, you need to modify the saveValues function to first call the closeModal function before calling the openUrl function.

Here's how you can modify the saveValues function:

 

function saveValues(mthis) {
    var butn = gel('ok_button').disabled = true;
    var table = '${JS:sysparm_sys_table_name}';
    var s = [];
    var emv = emailvals.querySelectorAll('input[type="checkbox"]');
    var sysID = '${JS:sysparm_sys_source_id}';
    [].forEach.call(emv, function(e) {
        if (e.checked)
            s.push(e.name);
    });

    var url = "/my_url"
    var gajax = new GlideAjax('global.script_include');
    gajax.addParam('sysparm_name', 'function');
    gajax.addParam('sysparm_ids', s.join(','));

    gajax.getXML(function(r) {
        closeModal(); // Call closeModal function before opening the URL
        openUrl(url);
    });

    return true;
}

 

 

If my response helps you to resolve the issue close the question by Accepting solution and hit 👍thumb icon. From Correct answers others will get benefited in future.

 

Thanks,

Ratnakar

Hi Ratnakar,

I tried, but the popup doesn't close and also the URL is not opening if I do this.

Palak Midha
Tera Contributor

I found the solution... started to use window.open and then refreshed the page, that worked like a charm for me