UI Action Button Does not Submit the form

SuyashJ41731830
Tera Contributor

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.