この記事で分かること
XMLHttpRequest(XHR)の基本構造GETリクエストの書き方POSTリクエストの書き方readyState・statusの扱い方- 実務での注意点(非同期処理・エラー処理)
XMLHttpRequest(XHR)は、fetch API が登場する以前に Ajax 通信の中心として使われていた古い非同期通信 API です。
現在ではレガシー扱いですが、GET・POST の基本構造や readyState の仕組みを理解しておくと、既存システムの保守やコード読解に役立ちます。
XMLHttpRequest(XHR)とは?
XMLHttpRequest(XHR)は、JavaScript でサーバーと非同期通信を行うための古くからある API です。
fetch API が登場するまでは Ajax の中心的存在でした。
現在でも一部のレガシー環境で使われているため、
基本的な使い方を理解しておくことは重要です。
XHR の基本構造
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://example.com/api");
xhr.send();
最低限必要なのはこの3ステップです。
- ①
new XMLHttpRequest() - ②
open(method, url) - ③
send()
GETリクエストの書き方
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts/1");
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(JSON.parse(xhr.responseText));
}
};
xhr.send();
readyState の意味
| 値 | 状態 |
|---|---|
| 0 | 未初期化 |
| 1 | open() 実行済み |
| 2 | ヘッダー受信 |
| 3 | データ受信中 |
| 4 | 通信完了 |
実務では readyState === 4 と status === 200 をセットで確認します。
POSTリクエストの書き方(JSON送信)
const xhr = new XMLHttpRequest();
xhr.open("POST", "https://jsonplaceholder.typicode.com/posts");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 201) {
console.log(JSON.parse(xhr.responseText));
}
};
const data = {
title: "Hello",
body: "XHR POST example",
userId: 1
};
xhr.send(JSON.stringify(data));
POST の場合は setRequestHeader で
Content-Type を指定する必要があります。
エラー処理の書き方
xhr.onerror = () => {
console.error("ネットワークエラーが発生しました");
};
fetch と違い、XHR はネットワークエラー時に onerror が発火します。
同期通信(非推奨)
XHR には同期通信(第3引数に false)もありますが、
ブラウザがフリーズするため完全に非推奨 です。
// 非推奨
xhr.open("GET", "/api", false);
JavaScript 初心者におすすめの学習書籍
書籍で学ぶのが向いている人
XMLHttpRequest(XHR)の基本構造を体系的に理解したいGET/POSTリクエストの仕組みを基礎から学びたいreadyStateやstatusの扱いを正しく理解したい- ネット記事だけだと情報が断片的に感じる
XHR は現在レガシー扱いですが、既存システムの保守やコード読解では必須の知識です。
書籍では非同期通信の基礎や HTTP の仕組みを順序立てて学べるため、
readyState・status の意味や
GET / POST の基本構造を深く理解できます。
いちばんやさしい JavaScript の教本
図解が多く、JavaScript の基本文法やブラウザの動作を視覚的に理解できる入門書です。
XHR のような古い API を読むために必要な「非同期処理の基礎」や
「HTTP 通信の流れ」を丁寧に学べます。
この本で解決できること:
XMLHttpRequestの基本構造を理解できるreadyStateとstatusの意味が分かるGET/POSTの違いと書き方を基礎から学べる
確かな力が身につく JavaScript「超」入門
実務で必要な非同期処理・エラー処理・HTTP 通信の理解を深めたい方に最適な入門書です。
XHR の onreadystatechange や onerror の扱いなど、
レガシーコードの読解に役立つ知識も身につきます。
この本で解決できること:
GET/POSTリクエストの実践的な書き方が理解できる- 非同期処理の流れとエラー処理の考え方が身につく
- fetch API と XHR の違いを踏まえた現代的な書き方を学べる
動画で理解を深めたい方へ(Udemy講座)
XHR の readyState の変化や
status の確認タイミングは、
実際の動作を画面で見ながら学ぶと理解が一気に深まります。
非同期通信の流れを視覚的に確認できるのが動画学習の強みです。
初心者のためのJavaScript 完全入門
JavaScript の基本文法から非同期処理まで体系的に学べる人気講座です。
XHR の動作や HTTP 通信の流れを理解するための基礎がしっかり身につきます。
この講座で解決できること:
readyStateの変化を視覚的に理解できるGET/POSTの通信フローが明確になる- 初心者がつまずきやすい非同期処理の概念を丁寧に解説
→ 初心者のためのJavaScript 完全入門(Udemy)
超JavaScript 完全ガイド 2026
実務で必要な HTTP 通信・エラー処理・非同期制御を深く理解したい方に最適な講座です。
XHR と fetch の違いや、レガシーコードの読み解き方も学べます。
この講座で解決できること:
- XHR の
GET/POSTの実践的な書き方を習得できる - エラー処理(
onerror)の実例を確認できる - 現代的な非同期処理(
Promise/async/await)との比較理解が深まる
体系的に学びたい方へ(スクールという選択肢)
独学の限界を感じやすいポイント
XMLHttpRequestの仕組みが曖昧なままになるreadyStateとstatusの扱いでつまずきやすい- 非同期処理の流れが理解しづらい
- エラー処理の書き方に自信が持てない
スクールでは、プロの講師が学習ロードマップを作成し、
XHR の基本構造から GET / POST、非同期処理、エラー処理まで
体系的に理解できるようサポートしてくれます。
無料相談で得られるメリット
- あなたのレベルに合わせた学習計画を作成
- 非同期通信やエラー処理の理解を深めるアドバイスがもらえる
- 効率的な学習方法をプロが提案
- エンジニア転職を視野に入れたキャリア相談も可能
JavaScript の基礎を効率よく学びたい方には、
DMM WEBCAMP の学習コースも選択肢のひとつです。
XMLHttpRequest(XHR)に関するよくある質問(FAQ)
XHR と fetch の違いは何ですか?
fetch は Promise ベースで書きやすく、XHR より現代的な API です。XHR はレガシー環境で使われます。
readyState === 4 なのに status が 200 以外のときはどうすればいいですか?
HTTPエラーなので、エラーメッセージを表示するなどの処理を行います。
POST で JSON を送るにはどうすればいいですか?
Content-Type を application/json に設定し、JSON.stringify で文字列化して送信します。
XHR は今でも使われていますか?
fetch が主流ですが、レガシーコードや一部の環境では今でも使われています。
まとめ
XMLHttpRequest(XHR)は古い API ですが、
GET・POST の基本構造を理解しておくと
レガシーコードの読み書きに役立ちます。
GET→open("GET")+send()POST→setRequestHeader+JSON.stringifyreadyStateとstatusのチェックが重要- エラー処理は
onerrorを使う
現代では fetch API が主流ですが、
XHR の理解は非同期処理の基礎として重要です。