XHR オブジェクトの作成

JavaScript XMLHttpRequest オブジェクト詳解:作成と AJAX リクエストの使用方法

JavaScript XMLHttpRequest オブジェクト詳解:作成と AJAX リクエストの使用方法

この文章では、JavaScript の XMLHttpRequest オブジェクトについて、基本から応用まで解説していきます。XHR オブジェクトの作成方法、非同期リクエストの送信、サーバーからのレスポンス処理まで、AJAX 技術を習得するための情報を網羅しています。

1. XMLHttpRequest オブジェクトとは?

XMLHttpRequest(XHR)オブジェクトは、JavaScript からサーバーと通信するための API です。AJAX の基盤となる技術であり、ページ全体をリロードすることなく、Web ページの一部を動的に更新することができます。

  • サーバーとの HTTP 通信を可能にする。
  • ページ遷移なしで、コンテンツを部分的に更新できる。
  • ユーザーエクスペリエンスの向上に貢献する。

XHR は、従来の ActiveXObject から XMLHttpRequest へと進化を遂げ、現在では主要なブラウザで広くサポートされています。

2. XMLHttpRequest オブジェクトの作成

XHR オブジェクトを作成するには、XMLHttpRequest() コンストラクタを使用します。


    let xhr = new XMLHttpRequest();
    

上記のコードは、新しい XHR オブジェクトを作成し、xhr 変数に代入しています。

ブラウザ互換性

Internet Explorer 5 や 6 などの古いブラウザでは、ActiveXObject を使用して XHR オブジェクトを作成する必要があります。


    if (window.XMLHttpRequest) {
        // IE7+, Firefox, Chrome, Opera, Safari
        xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        // IE5, IE6
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    

3. AJAX リクエストの送信

XHR オブジェクトを使用して AJAX リクエストを送信する手順は以下のとおりです。

  1. open() メソッドでリクエストを初期化する。
  2. send() メソッドでリクエストを送信する。

open() メソッド

open() メソッドは、リクエストの HTTP メソッド、URL、非同期フラグなどを設定します。


    xhr.open("GET", "https://example.com/api/data", true);
    

上記のコードは、GET メソッドで https://example.com/api/data に非同期リクエストを送信する準備をしています。

引数 説明
method HTTP メソッド (GET, POST, PUT, DELETE など)
url リクエスト先の URL
async 非同期フラグ (true: 非同期, false: 同期)

send() メソッド

send() メソッドは、リクエストをサーバーに送信します。


    xhr.send();
    

POST リクエストの場合、リクエストボディを send() メソッドに渡します。


    xhr.open("POST", "https://example.com/api/data", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("name=john&age=30");
    

4. サーバーからのレスポンス処理

サーバーからのレスポンスは、XHR オブジェクトのプロパティを使用して取得できます。

プロパティ 説明
readyState リクエストの状態 (0: 未初期化, 4: 完了)
status HTTP ステータスコード (200: 成功, 404: Not Found など)
responseText テキスト形式のレスポンス本文
responseXML XML 形式のレスポンス本文

readystatechange イベントを监听することで、リクエストの状態が変化したときに処理を実行できます。


    xhr.onreadystatechange = function() {
        if (this.readyState === 4 && this.status === 200) {
            console.log(this.responseText); // レスポンス本文を出力
        }
    };
    

まとめ

この記事では、JavaScript の XMLHttpRequest オブジェクトを使用して AJAX リクエストを送信し、サーバーからのレスポンスを処理する方法について解説しました。XHR は、Web 開発において重要な技術であり、理解することで、より高度な Web アプリケーションを開発することができます。

参考資料

関連する質問と回答

Q1: AJAX とは?

A1: AJAX (Asynchronous JavaScript and XML) は、JavaScript の非同期通信技術を使って、ページ遷移なしでサーバーとデータのやり取りを行い、Web ページの一部を動的に更新する手法です。

Q2: XMLHttpRequest の使いどころは?

A2: フォーム送信時の入力値チェック、検索結果の動的表示、チャットアプリケーションのリアルタイム更新など、ユーザー体験を向上させるために、ページ全体をリロードせずに一部だけ更新したい場合に利用されます。

Q3: Fetch API と XMLHttpRequest の違いは?

A3: Fetch API は、XMLHttpRequest よりも新しい API で、より簡潔な記述で非同期通信を実現できます。Promise ベースで処理を記述できる点も大きな違いです。ただし、古いブラウザではサポートされていない場合があります。