
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 リクエストを送信する手順は以下のとおりです。
- open()メソッドでリクエストを初期化する。
- 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 ベースで処理を記述できる点も大きな違いです。ただし、古いブラウザではサポートされていない場合があります。