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 Action Button Does not Submit the form

SuyashJ41731830
Kilo Guru

Hello,
I have a script include and a UI action Script

var JiraProjectFetcher = Class.create();
JiraProjectFetcher.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getJiraProjects: function() {
        var projects = [
            { name: 'Project A', id: 'P-001', u_id: 'UID-001' },
            { name: 'Project B', id: 'P-002', u_id: 'UID-002' },
            { name: 'Project C', id: 'P-003', u_id: 'UID-003' }
        ];

        var result = [];

        for (var i = 0; i < projects.length; i++) {
            result.push({
                label: projects[i].name,
                value: projects[i].id
            });
        }

        return JSON.stringify(result);
    }

});




(function fetchAndPopulateProjects() {
var ga = new GlideAjax('JiraProjectFetcher');
ga.addParam('sysparm_name', 'getJiraProjects');
ga.getXMLAnswer(function(response) {
var projects = JSON.parse(response);
if (projects.length === 0) {
alert('No Jira projects returned.');
return;
}
g_form.clearOptions('u_project_name');
g_form.addOption('u_project_name', '', '-- Select a project --');
for (var i = 0; i < projects.length; i++) {
g_form.addOption('u_project_name', projects[i].value, projects[i].label);
}
alert("Jira project options loaded.");
});
})();


The issue is when i click in the button the button is not clicked / unclickable.
I need to test the script that it is fetching value from the script include and populating in the field 

Thanks, and Regards,
Suyash
1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@SuyashJ41731830 

share your UI action configuration screenshot

since you are using Client Side UI action make sure this

1) client checkbox - true

2) Onclick function - fetchAndPopulateProjects()

3) Script field as this

function fetchAndPopulateProjects() {

    var ga = new GlideAjax('JiraProjectFetcher');
    ga.addParam('sysparm_name', 'getJiraProjects');
    ga.getXMLAnswer(function(response) {
        var projects = JSON.parse(response);
        if (projects.length === 0) {
            alert('No Jira projects returned.');
            return;
        }
        g_form.clearOptions('u_project_name');
        g_form.addOption('u_project_name', '', '-- Select a project --');
        for (var i = 0; i < projects.length; i++) {
            g_form.addOption('u_project_name', projects[i].value, projects[i].label);
        }
        alert("Jira project options loaded.");
    });

}

AnkurBawiskar_0-1747658687217.png

 

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

5 REPLIES 5

ChiranjeeviR
Kilo Sage

Hi @SuyashJ41731830,

 

 Step-by-Step Fix
1.  Change the Script to a Click Handler
You currently have this:

(function fetchAndPopulateProjects() {
var ga = new GlideAjax('JiraProjectFetcher');
...
})();
This is an IIFE (Immediately Invoked Function Expression) — it runs as soon as the UI Action loads, not on button click.

 

 Fix: Define a named function instead:

function fetchAndPopulateProjects() {
var ga = new GlideAjax('JiraProjectFetcher');
ga.addParam('sysparm_name', 'getJiraProjects');
ga.getXMLAnswer(function(response) {
var projects = JSON.parse(response);
if (projects.length === 0) {
alert('No Jira projects returned.');
return;
}
g_form.clearOptions('u_project_name');
g_form.addOption('u_project_name', '', '-- Select a project --');
for (var i = 0; i < projects.length; i++) {
g_form.addOption('u_project_name', projects[i].value, projects[i].label);
}
alert("Jira project options loaded.");
});
}

 

2. UI Action Configuration
In the UI Action record, set:

Field Value
Name Fetch Projects
Table [Your table name]
Action name fetch_projects
Form button  (checked)
Client (checked)
Script fetchAndPopulateProjects();

 

3. Script Include Configuration
Make sure the Script Include is:

Accessible from client scripts:

Check Client Callable

Name exactly: JiraProjectFetcher

Extends AbstractAjaxProcessor ( you already have)

 

Result
Once you make the above changes:

The button will appear on the form.

When clicked, it will fetch Jira projects from the Script Include via GlideAjax.

It will populate the dropdown field u_project_name.

 

 

Thanks and Regards,

Chiranjeevi R

Please mark as Correct Answer/Helpful, if applicable.

Thanks & Regards,
Chiranjeevi
ServiceNow Developer | | ITSM | | ServiceNow Discovery | | Event Management | | Service Mapping | | CMDB

Please mark as Correct Answer/Helpful, if applicable.