現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Ajax / fetch / API(非同期処理)

【JavaScript入門】XMLHttpRequest(XHR)の使い方|GET・POSTリクエストの実装方法を初心者向けに解説

投稿日:2026年5月18日 更新日:

この記事で分かること

  • XMLHttpRequest(XHR)の基本構造
  • GETリクエストの書き方
  • POSTリクエストの書き方
  • readyStatestatus の扱い方
  • 実務での注意点(非同期処理・エラー処理)

XMLHttpRequest(XHR)は、fetch API が登場する以前に Ajax 通信の中心として使われていた古い非同期通信 API です。
現在ではレガシー扱いですが、GETPOST の基本構造や 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 === 4status === 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 リクエストの仕組みを基礎から学びたい
  • readyStatestatus の扱いを正しく理解したい
  • ネット記事だけだと情報が断片的に感じる

XHR は現在レガシー扱いですが、既存システムの保守やコード読解では必須の知識です。
書籍では非同期通信の基礎や HTTP の仕組みを順序立てて学べるため、
readyStatestatus の意味や
GET / POST の基本構造を深く理解できます。

いちばんやさしい JavaScript の教本

図解が多く、JavaScript の基本文法やブラウザの動作を視覚的に理解できる入門書です。
XHR のような古い API を読むために必要な「非同期処理の基礎」や
「HTTP 通信の流れ」を丁寧に学べます。

この本で解決できること:

  • XMLHttpRequest の基本構造を理解できる
  • readyStatestatus の意味が分かる
  • GET / POST の違いと書き方を基礎から学べる

確かな力が身につく JavaScript「超」入門

実務で必要な非同期処理・エラー処理・HTTP 通信の理解を深めたい方に最適な入門書です。
XHR の onreadystatechangeonerror の扱いなど、
レガシーコードの読解に役立つ知識も身につきます。

この本で解決できること:

  • 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)との比較理解が深まる

超JavaScript 完全ガイド 2026(Udemy)

体系的に学びたい方へ(スクールという選択肢)

独学の限界を感じやすいポイント

  • XMLHttpRequest の仕組みが曖昧なままになる
  • readyStatestatus の扱いでつまずきやすい
  • 非同期処理の流れが理解しづらい
  • エラー処理の書き方に自信が持てない

スクールでは、プロの講師が学習ロードマップを作成し、
XHR の基本構造から GET / POST、非同期処理、エラー処理まで
体系的に理解できるようサポートしてくれます。

無料相談で得られるメリット

  • あなたのレベルに合わせた学習計画を作成
  • 非同期通信やエラー処理の理解を深めるアドバイスがもらえる
  • 効率的な学習方法をプロが提案
  • エンジニア転職を視野に入れたキャリア相談も可能

JavaScript の基礎を効率よく学びたい方には、
DMM WEBCAMP の学習コースも選択肢のひとつです。

DMM WEBCAMP 学習コース(無料相談はこちら)



XMLHttpRequest(XHR)に関するよくある質問(FAQ)

Q1

XHR と fetch の違いは何ですか?

A

fetchPromise ベースで書きやすく、XHR より現代的な API です。XHR はレガシー環境で使われます。

Q2

readyState === 4 なのに status200 以外のときはどうすればいいですか?

A

HTTPエラーなので、エラーメッセージを表示するなどの処理を行います。

Q3

POST で JSON を送るにはどうすればいいですか?

A

Content-Typeapplication/json に設定し、JSON.stringify で文字列化して送信します。

Q4

XHR は今でも使われていますか?

A

fetch が主流ですが、レガシーコードや一部の環境では今でも使われています。



まとめ

XMLHttpRequest(XHR)は古い API ですが、
GETPOST の基本構造を理解しておくと
レガシーコードの読み書きに役立ちます。

  • GETopen("GET") + send()
  • POSTsetRequestHeader + JSON.stringify
  • readyStatestatus のチェックが重要
  • エラー処理は onerror を使う

現代では fetch API が主流ですが、
XHR の理解は非同期処理の基礎として重要です。



関連記事

【JavaScript入門】Ajaxとは?仕組み・特徴・XMLHttpRequestを初心者向けにわかりやすく解説

この記事で分かること Ajaxとは何か(技術の組み合わせで成り立つ概念) 非同期通信の仕組みとメリット XMLHttpRequestの役割と特徴 Googleマップやサジェストで使われる理由 Ajax …

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

レンタルサーバー エックスサーバー

-Ajax / fetch / API(非同期処理)

執筆者: