e-ajax
v1.0.4
Published
Declarative AJAX for jQuery forms and elements via e-ajax-* attributes — loading states, retries, debounce, abort-on-resubmit, inline field errors, no $.ajax() boilerplate.
Maintainers
Readme
e-ajax
Declarative AJAX for jQuery forms and elements — add e-ajax-* attributes to your HTML instead of hand-writing $.ajax() boilerplate for every form.
Handles loading states, input disabling, retries with backoff, debouncing, abort-on-resubmit, confirmation prompts (native or custom), and inline per-field error rendering — declaratively or from JS.
Browser-only. This runs in the browser and requires jQuery + the DOM. It's published on npm so it works with bundlers and CDNs — it does not run in Node.js.
Install
npm install e-ajax jqueryor drop it straight in with no build step:
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/e-ajax/dist/e-ajax.min.js"></script>Quick start
<form e-ajax-init
e-ajax-key="loginForm"
e-ajax-url="/api/login"
e-ajax-method="POST"
e-ajax-event="submit"
e-ajax-onSuccess="handleLoginSuccess">
<input type="email" name="email" />
<input type="password" name="password" />
<button type="submit">Log in</button>
</form>
<script>
function handleLoginSuccess(response) {
console.log("Logged in:", response);
}
</script>That's it — no JS wiring required. The form serializes itself, POSTs to /api/login on submit, and calls handleLoginSuccess with the parsed response. Native form submission (the page redirect) is prevented automatically.
Why
Most jQuery AJAX code is the same handful of concerns rewritten per form: prevent default, serialize, disable inputs while sending, show a loading state on the button, render field errors from the response, re-enable on completion. e-ajax handles all of that from attributes on the element itself, while still giving you onValidate, onSuccess, onError, etc. as escape hatches for actual business logic.
Features
- Zero-JS declarative binding via
e-ajax-init+e-ajax-*attributes - Programmatic equivalent via
makeAjaxOnElement(selector, event, options) - Client-side
onValidatehook — returnfalseto cancel, or an errors object to cancel and render field errors automatically - Native or fully custom confirmation dialogs (
e-ajax-confirm/e-ajax-onConfirm) - Automatic retry with exponential backoff on network failure / 5xx (never on 4xx or abort)
- Debounce, and abort-previous-request-on-resubmit
- Inline per-field error rendering from server responses (
e-ajax-error/e-ajax-for) - Button loading-state swapping, input disabling while in flight
- File uploads with upload progress callback
Docs
Full attribute reference, the makeAjaxOnElement API, and recipes (file upload with progress, custom confirmation modals, live search, retry, field-level validation) are in DOCS.md.
License
MIT
