Your Search Results

    XMLHttpRequest

    XMLHttpRequest は Microsoft によって設計され、Mozilla、Apple および Google が採用した JavaScript オブジェクトです。現在は W3C にて標準化されています。URL から データを読み出す簡単な方法を提供します。XMLHttpRequest という名前ではあるものの、XML に限らないデータ形式を取り扱うことができ、( file および ftp を含む) HTTP 以外のプロトコルもサポートしています。

    XMLHttpRequest のインスタンスは、このように簡単に生成できます:

    var req = new XMLHttpRequest();
    

    XMLHttpRequest の使い方の詳細については、Using XMLHttpRequest を参照してください。

    メソッド概要

    void abort();
    string getAllResponseHeaders();
    ACString getResponseHeader(in AUTF8String header);
    [noscript] void init(in nsIPrincipal principal, in nsIScriptContext scriptContext, in nsPIDOMWindow ownerWindow);
    void open(in AUTF8String method, in AUTF8String url);
    [noscript] void openRequest(in AUTF8String method, in AUTF8String url, in boolean async, in AString user, in AString password);
    void overrideMimeType(in AUTF8String mimetype);
    void send([optional] in nsIVariant body);
    void sendAsBinary(in DOMString body);
    void setRequestHeader(in AUTF8String header, in AUTF8String value);

    プロパティ

    属性 詳細
    channel nsIChannel リクエストの実行の際にオブジェクトによって使われるチャンネルです。チャンネルが作成されていない場合、この値は null となります。マルチパート・リクエストにおいてこの値は、マルチパート・リクエスト中の別々のパートではなく、最初のチャンネルとなります。アクセスには昇格された権限が必要です。読み取り専用。
    mozBackgroundRequest boolean

    オブジェクトがバックグラウンドサービスのリクエストであるかどうかを示します。 true である場合、リクエストに関連した読み込みグループは無く、セキュリティダイアログのユーザーへの表示が防止されます。アクセスには昇格された権限が必要です。

    この場合において、(認証や不正な証明書の通知といった)セキュリティダイアログが通常通り表示されたのであれば、単純にリクエストが失敗したことを意味します。

    mozResponseArrayBuffer 廃止 Gecko 6 ArrayBuffer リクエストに対する、JavaScript typed array 形式でのレスポンス。この値が NULL である場合、リクエストが成功しなかった、またはリクエストがまだ送信されていないかもしれません。読み取り専用。
    multipart boolean

    レスポンスが複数のXML文書のストリームになることが予想されるかどうかを表します。true が設定された場合、最初のレスポンスのコンテンツタイプが multipart/x-mixed-replace でなければエラーが発生するでしょう。すべてのリクエストは非同期でなければなりません。

    これによりサーバーからのプッシュ通信が可能になります; ひとつひとつの XML document を、このリクエスト形式で記述することにより、ドキュメントが送られてくる都度、新たな XML DOM document が生成され、onload ハンドラが呼び出されます。

    註: true に設定された場合、最初の XMLdocument が読み込まれて以降、 onload ハンドラと他のイベントハンドラはリセットされません。そして以後、レスポンスの断片を受け取る度に onload ハンドラが呼び出されることとなります。

    onreadystatechange

    nsIDOMEventListener

    readyState 属性が変更する都度呼び出される、 JavaScript 関数オブジェクト。コールバック関数はユーザーインターフェーススレッドから呼び出されます。

    警告: このプロパティはネイティブコードから使用してはいけません。また、同期リクエストとともに利用するべきでもありません。
    readyState unsigned short

    リクエストの状態です:

    状態 詳細
    0 UNSENT open() がまだ呼び出されていない。
    1 OPENED send() がまだ呼び出されていない。
    2 HEADERS_RECEIVED send() が呼び出され、ヘッダーとステータスが通った。
    3 LOADING ダウンロード中; responseText は断片的なデータを保持している。
    4 DONE 一連の動作が完了した。
    response varies

    ArrayBufferBlob、{domxref("Document")}} 、JavaScript object ("json"を指定した場合)、または string といった responseType に従ったレスポンスの実体ボディ。リクエストが完了していない、または成功しなかった場合、この値は NULL となります。

    responseText AString リクエストに対するテキスト形式でのレスポンス。リクエストの失敗または未送信の場合は null となります。読み取り専用。
    responseType AString

    値を設定することでレスポンス型を変更することができます。これにより、サーバーに対して、どの形式のレスポンスを求めているかを表明します。

    response プロパティのデータ型
    empty string String (デフォルト値)
    "arraybuffer" ArrayBuffer
    "blob" Blob
    "document" Document
    "text" String
    "json" サーバーが返してきたJSON文字列をパースした JavaScript オブジェクト
    註: この指定は Firefox 9 では "moz-json" として実装されていました。この接頭辞付きの指定は Firefox 10 で削除されたため、今後は動作しません。
    responseXML nsIDOMDocument

    リクエストに対する、DOM Document オブジェクト形式のレスポンスです。リクエストが完了してない、成功しなかった、もしくはXMLとしてパースに失敗した場合、この値は null となります。レスポンスは text/xml ストリームとしてパースされます。読み取り専用。

    註: サーバーが text/xml Content-Type ヘッダを付与していない場合、overrideMimeType() を用いることで、XMLHttpRequest に強制的に XML としてパースさせることができます。
    status unsigned long リクエストに対するレスポンスのステータスです。この値は HTTP リザルトコードとなります(例えばリクエストに成功した場合、status は 200 となります).読み取り専用。
    statusText AUTF8String HTTP サーバーから返ってきたレスポンス文字列です。status とは異なり、("200 OK" のように)レスポンスメッセージの完全な文が含まれています。読み取り専用。
    upload nsIXMLHttpRequestUpload uploadにイベントリスナを加えることにより、アップロードプロセスを追跡することができます。
    withCredentials boolean

    クロスサイト Access-Control リクエストに cookie や 認証ヘッダといった 認証情報を使用させるかを示します。

    註: 同一サイトでのリクエストに影響を与えることはありません。

    デフォルト値は false です。

    メソッド

    abort()

    リクエストがすでに送信されている場合、リクエストを中止します。

    getAllResponseHeaders()

    string getAllResponseHeaders();
    

    文字列として、すべてのレスポンスヘッダを返します。レスポンスを何も受け取らなかった場合は null を返します。 註: マルチパートリクエストでは、オリジナルのチャンネルではなく、リクエストの現在のパートのヘッダを返します。

    getResponseHeader()

    ACString getResponseHeader(
     in AUTF8String header
    );
    

    指定したヘッダ文を含む文字列を返します。レスポンスを受信していない、またはレスポンス中に指定したヘッダが存在しない場合は null を返します。

    非標準

    init()

    C++ のコードから使うことにより、オブジェクトを初期化します。

    警告: JavaScript からこのメソッドを呼び出してはいけません
    [noscript] void init(
     in nsIPrincipal principal,
     in nsIScriptContext scriptContext,
     in nsPIDOMWindow ownerWindow
    );
    
    引数
    principal
    レスポンスに用いる主体。null は禁止されています。
    scriptContext
    リクエストに用いたスクリプトコンテクスト。null は禁止されています。
    ownerWindow
    リクエストに関連するウィンドウ。null は禁止されています。

    open()

    リクエストを初期化します。このメソッドは JavaScript から使用するようにしてください。ネイティブコードからの初期化には、代わりに openRequest() を使用するようにしてください。

    註: 既にアクティブなリクエストがある状況( open() または openRequest() が既に呼び出された状況)で、このメソッドを呼び出した場合、abort() を呼び出すのと等価となります。
    void open(
     in AUTF8String method,
     in AUTF8String url,
     [optional] in boolean async,
     [optional] in AString user,
     [optional] in AString password
    );
    
    引数
    method
    使用する HTTP メソッド。"POST" または "GET"となります。HTTP URLでない場合は無視されます。
    url
    リクエストを送信する URL
    async
    非同期で操作を実行するかを示す、オプションの真偽値です。デフォルトでは true に設定されています。false が設定されている場合、send() メソッドはレスポンスを受信するまで返しません。true が設定されている場合、トランザクションが完了した通知は、イベントリスナによって提供されます。multipart 属性が true である、または例外が投げられるであろう場合、この値は trueなければなりません
    user
    認証を目的として使用される、ユーザー名のオプションです。デフォルトでは、空の文字列となっています。
    password
    認証を目的として使用される、パスワードのオプションです。デフォルトでは、空の文字列となっています。

    非標準

    openRequest()

    リクエストを初期化します。このメソッドは ネイティブコード から使用するようにしてください。JavaScript コードからの初期化には、代わりに open() を使用するようにしてください。open() の項目を参照してください。

    非標準

    overrideMimeType()

    サーバーから返ってくる MIME タイプを上書きします。例えば、サーバーの返す MIME タイプに関わらず、強制的に text/xml としてストリームをパースするなどの用途に使えるでしょう。このメソッドは send() が呼び出される前に呼び出す必要があります。

    void overrideMimeType(
     in AUTF8String mimetype
    );
    

    send()

    リクエストを送信します。非同期リクエストの場合(デフォルトの場合ですが)、メソッドはリクエストを送信して間もなく返ります。同期リクエストの場合、このメソッドはレスポンスが到着するまで返りません。

    註: send() を呼び出す前に、イベントリスナを設定する必要があります。
    void send(
     [optional] in nsIVariant body
    );
    
    引数
    body
    POST リクエストの本文として使われる場合、この値は nsIDocumentnsIInputStream、または文字列 (ネイティブコードから呼び出している場合は nsISupportsString) のいずれかとなります。Gecko 1.9.2 からは DOM File を、Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) からは、FormData オブジェクトを指定できるようになりました。
    脚注

    body が nsIDOMDocument である場合、送信の前にシリアライズされます。nsIDOMDocument を送信するとき、Firefox 3 までのバージョンでは常に UTF-8 エンコーディングを用いてリクエストが送信されます。Firefox 3 では、正確に body.xmlEncoding で指定されている、またはエンコードの指定が無い場合は UTF-8 を用いてエンコードされたドキュメントを送信します。

    body が nsIInputStreamの場合、nsIUploadChannelsetUploadStream() メソッドと互換性が無ければなりません。その場合、リクエストの Content-Length ヘッダに nsIInputStreamavailable() メソッドを用いて取得された値が設定されます。ッセージ本文の一部として扱われるストリームの最初には、あらゆるヘッダが含まれます。ストリームの MIME タイプは、send() よりも先に呼び出した setRequestHeader()メソッドを用いて設定された Content-Type ヘッダが指定されるはずです。

    非標準

    sendAsBinary()

    バイナリデータを送る、send() メソッドの亜種です。

    void sendAsBinary(
     in DOMString body
    );
    
    引数
    body
    DOMstring 形式のリクエスト本体です。このデータは切り捨て処理(それぞれの文字の上位バイトを削除)によって1バイト文字の文字列に変換されます。

    setRequestHeader()

    HTTP リクエストヘッダの値を設定します。 このメソッドを使用する前に、open() を呼び出さなくてはいけません。

    void setRequestHeader(
     in AUTF8String header,
     in AUTF8String value
    );
    
    引数
    header
    設定されるヘッダーの名前。
    value
    設定されるヘッダー本文の値。

    • デフォルトでは、irefox 3 では XMLHttpRequest のサーバー毎の接続数は6つずつに制限されています(それ以前のバージョンではこの値はサーバーごとに2つずつでした)。いくつかのインタラクティブな Web サイトでは XMLHttpRequest の接続を開いたままにしており、そうしたサイトでは複数のセッションが開かれているために、ウィンドウの再描画が行われなかったり操作に反応しなくなるなど、ブラウザが応答しなくなるかもしれません。この値は about:config 内の network.http.max-persistent-connections-per-server の設定を編集することにより変更が可能です。
    • Gecko 7.0 より、setRequestHeader() によってセットされるヘッダーが、リダイレクト時にもリクエストともに送信されるようになりました。以前では、これらのヘッダーが送信されることはありませんでした。
    • XMLHttpRequest は Gecko に於いて nsIXMLHttpRequestnsIXMLHttpRequestEventTarget、および nsIJSXMLHttpRequest インターフェースを用いて実装されています。

    イベント

    後に、多くのブラウザでは 追加でイベントハンドラがいくつもサポートされてきました(onloadonerroronprogress など)。これらは Firefox でもサポートされています。詳細は、nsIXMLHttpRequestEventTarget および Using XMLHttpRequest を参照してください。

    Firefox を含む最近のブラウザでは、XMLHttpRequest のイベントを監視する方法として、on* プロパティにハンドラ関数を設定する方法に加え、標準のイベントの addEventListener APIを使用してイベントを監視する方法が提供されています。

    ブラウザ互換性

    機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    基本機能のサポート 1 1.0

    5 (ActiveXObject により実装)

    7 (XMLHttpRequest)

    ? 1.2
    機能 Android Chrome for Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
    基本機能のサポート ? 0.16 (有) ? ? ?

    参考

    Document Tags and Contributors

    Contributors to this page: saneyuki_s, ethertank, Mgjbot, Hfjapancom, torinome, Electrolysis, Okome
    最終更新者: ethertank,