AJAX — Asynchronous JavaScript and XML — is the technique of exchanging data with a server from a page that is already loaded, and updating part of the document with the result instead of reloading it. The name is historical: almost nothing uses XML any more, and the modern transport is fetch rather than XMLHttpRequest. What survives is the pattern, and it underpins every application that loads a table, submits a form, autocompletes a search field or polls for status without navigating away.
Mechanically there are three pieces. A request is issued from JavaScript with a method, headers and optionally a body. The browser applies its security rules — same-origin policy, preflight, credential handling — before the request leaves. The response comes back asynchronously, and the code has to deal with status codes, parsing, errors, timeouts and the fact that other requests may have been issued in the meantime. XMLHttpRequest exposes this through readyState and event handlers; fetch exposes it through promises; libraries such as jQuery Ajax and Axios wrap either with their own conventions, interceptors and defaults.
Writing AJAX that works in a demo is trivial. Writing it for production means everything around the happy path: JSON payloads validated before they reach application code, loading and error states that a user can understand, cancellation so a stale response cannot overwrite a fresh one, retries with backoff for transient failures, pagination and rate limits, CORS configured correctly rather than disabled, tokens handled without exposing them, and network calls mocked in tests so a pipeline can verify behaviour without depending on a live API.
Why this skill matters now
Every interface an organisation ships now talks to an API from the browser. Single-page applications, server-rendered pages with dynamic sections, dashboards, admin tools and embedded widgets are all AJAX by another name, and the quality of that layer decides whether the product feels fast or broken under a poor network.
The failure modes have also become operational concerns rather than frontend details. A missing timeout turns a slow backend into a hung page. A retry loop without backoff turns a degraded service into an outage. Race conditions between concurrent requests produce data corruption that is almost impossible to reproduce. Misconfigured CORS is one of the most common causes of a release being rolled back, and one of the most commonly fixed by making the policy dangerously permissive.
The skill in demand is not calling fetch. It is designing the client side of an API contract — validation at the boundary, explicit failure handling, cancellation, caching, observability of failed requests, and tests that run in CI against a mock rather than a live endpoint. That is what separates a page that survives a bad network from one that only worked on the developer's machine.