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.

Can we get records from table in Ui Page ?

Snehal13
Kilo Sage

I have to get records from incident table on ui page. The ui page has a date field and a button. When users provides date and clicks on button, it must return rhe incidents created on that date.

 

I used glideajax and get response,  how to parse response. Stuck at parsing the response and showing proper data in loop

1 REPLY 1

Bhavya11
Kilo Patron
Kilo Patron

hi @Snehal13 ,

 

Please try below code in UI page 

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide">
    <html>
        <head>
            <title>Incident Search</title>
            <script type="text/javascript">
                function getIncidents(){
                    var dateField = document.getElementById('date_field').value;
                    if (!dateField) {
                        alert('Please select a date.');
                        return;
                    }

                    var ga = new GlideAjax('IncidentFetcher');
                    ga.addParam('sysparm_name', 'getIncidentsByDate');
                    ga.addParam('sysparm_date', dateField);
                    ga.getXMLAnswer(function(response) {
                        var resultsDiv = document.getElementById('results');
                        resultsDiv.innerHTML = '';
                        var incidents = JSON.parse(response);
                        if (incidents.length === 0) {
                            resultsDiv.innerHTML = '<p>No incidents found for the selected date.</p>';
                            return;
                        }
                        var table = '<table><tr><th>Number</th><th>Short Description</th><th>Created</th></tr>';
                        incidents.forEach(function(incident) {
                            table += '<tr><td>' + incident.number + '</td><td>' + incident.short_description + '</td><td>' + incident.sys_created_on + '</td></tr>';
                        });
                        table += '</table>';
                        resultsDiv.innerHTML = table;
                    });
                }
            </script>
        </head>
        <body>
            <h2>Search Incidents by Date</h2>
            <div>
                <label for="date_field">Enter Date (YYYY-MM-DD):</label>
                <input type="date" id="date_field" name="date_field"/>
                <button onclick="getIncidents()">Get Incidents</button>
            </div>
            <div id="results"></div>
        </body>
    </html>
</j:jelly>

 

 

Script include: Client callable script

 

var IncidentFetcher = Class.create();
IncidentFetcher.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   getIncidentsByDate: function() {
        var date = this.getParameter('sysparm_date');
        var gr = new GlideRecord('incident');
        gr.addQuery('sys_created_on', '>=', date + ' 00:00:00');
        gr.addQuery('sys_created_on', '<=', date + ' 23:59:59');
        gr.query();
        
        var incidents = [];
        while (gr.next()) {
            incidents.push({
                number: gr.getValue('number'),
                short_description: gr.getValue('short_description'),
                sys_created_on: gr.getValue('sys_created_on')
            });
        }
        
        return JSON.stringify(incidents);
    }
});

 

 

Output:

Bhavya11_0-1722404199133.png

 

Please mark helpful & correct answer if it's really worthy for you.

 

Thanks,

BK