AJAX filtering and pagination
without loading all data at once
Most WordPress table plugins dump all rows into the page and filter in the browser. That works for 50 rows. For 5,000 — or 50,000 — it means slow loads, high memory, and your full dataset exposed in the HTML source.
Client-Side vs Server-Side
Two approaches — very different results at scale.
| Client-Side (most plugins) | Server-Side AJAX (NMR jsGrid) | |
|---|---|---|
| Data loaded on page open | All rows at once | Current page only (e.g. 20 rows) |
| Filtering | JS filters already-loaded data | SQL WHERE clause — database does the work |
| Pagination | Hides rows in HTML, shows/hides | New AJAX request per page |
| Data in page source | All data visible | Nothing except current page |
| Performance with large tables | Degrades quickly | Consistent regardless of table size |
| Works with 100k+ rows | ✗ No | ✓ Yes |
How NMR jsGrid Handles This
Every interaction — filter, sort, page change — runs through this cycle.
Page loads with an empty grid shell — fast, nothing heavy in the HTML.
Grid fires an AJAX request with current page number, filter values, and sort column.
WordPress builds a SQL query with WHERE, ORDER BY, and LIMIT/OFFSET from those values.
Only matching rows for that page are returned as JSON.
Grid renders those rows. The rest of the dataset never touches the browser.
When the user types in a filter field, steps 2–5 repeat with filter values applied. Pagination resets to page 1 with the filtered count. All instant — no page reload.
Set Up an AJAX Table in 5 Steps
No PHP. No custom code. Just configure and embed.
Install NMR jsGrid
WordPress Admin → Plugins → Add New → search NMR jsGrid → Install → Activate.
Create a New Grid
NMR jsGrid → Add New. Name it — this becomes the shortcode ID.
Configure Data Source
Choose SQL and enter your query. The plugin automatically adds WHERE clauses from filter inputs and LIMIT/OFFSET for pagination.
SELECT id, name, email, department, hire_date
FROM wp_employees
Add Columns and Enable Filtering
Add a column for each field. Toggle Filtering on per column. Set page size (e.g. 25 rows per page).
Embed on Any Page
Good Fit For
Any dataset that client-side table plugins struggle with.
Employee & member directories
Search by name, department, location. Instant results on large employee lists.
Product catalogs
Filter by category, price range, or any custom attribute — server-side, no lag.
Order & transaction history
Filter by date, status, or customer across thousands of records without slowing down.
Any large dataset
Legacy tables, custom plugin data, form submissions — if it’s in MySQL, jsGrid can display it.
Ready for server-side AJAX tables?
Start free. Upgrade when you need more than 10 grids or want column auto-detection. One-time payment, no subscription.