XMLチュートリアル

XMLホーム XMLの紹介 XML使用方法 XMLツリー XML構文 XML要素 XML属性 XML名前空間 XML表示 XML HttpRequest XMLパーサー XML DOM XML XPath XML XSLT XML XQuery XML XLink XMLバリデーター XML DTD XMLスキーマ XMLサーバー XMLの例 XMLクイズ XML証明書

XML AJAX

AJAXの紹介 AJAX XMLHttp AJAXリクエスト AJAX応答 AJAXXMLファイル AJAX PHP AJAX ASP AJAXデータベース AJAXアプリケーション AJAXの例

XML DOM

DOMの紹介 DOMノード DOMアクセス DOMノード情報 DOMノードリスト DOMトラバース DOMナビゲーション DOMは値を取得します DOM変更ノード DOM削除ノード DOM置換ノード DOM作成ノード DOM追加ノード DOMクローンノード DOMの例

XPathチュートリアル

XPathの概要 XPathノード XPath構文 XPath軸 XPath演算子 XPathの例

XSLTチュートリアル

XSLTの紹介 XSL言語 XSLT変換 XSLT <テンプレート> XSLT <値> XSLT <for-each> XSLT <ソート> XSLT <if> XSLT <選択> XSLT適用 クライアント上のXSLT サーバー上のXSLT XSLT Edit XML XSLTの例

XQueryチュートリアル

XQueryの紹介 XQueryの例 XQuery FLWOR XQuery HTML XQueryの用語 XQuery構文 XQuery追加 XQuery Select XQuery関数

XML DTD

DTDの紹介 DTDビルディングブロック DTD要素 DTD属性 DTD要素と属性 DTDエンティティ DTDの例

XSDスキーマ

XSDの概要 XSDハウツー XSD <スキーマ> XSD要素 XSD属性 XSDの制限

XSDコンプレックス

XSD要素 XSDが空です XSD要素のみ XSDテキストのみ XSD混合 XSDインジケーター XSD <任意> XSD <anyAttribute> XSD置換 XSDの例

XSDデータ

XSD文字列 XSD日付 XSD数値 XSDその他 XSDリファレンス

Webサービス

XMLサービス XML WSDL XML SOAP XML RDF XML RSS

参考文献

DOMノードタイプ DOMノード DOM NodeList DOM NamedNodeMap DOMドキュメント DOM要素 DOM属性 DOMテキスト DOM CDATA DOMコメント DOM XMLHttpRequest DOMパーサー XSLT要素 XSLT / XPath関数

XMLHttpRequestオブジェクト_


最新のブラウザにはすべて、サーバーからデータを要求するためのXMLHttpRequestオブジェクトが組み込まれています。

すべての主要なブラウザーには、XMLにアクセスして操作するための組み込みのXMLパーサーがあります。


XMLHttpRequestオブジェクト

XMLHttpRequestオブジェクトを使用して、Webサーバーからデータを要求できます。

XMLHttpRequestオブジェクトは、次のことができるため、開発者の夢です。

  • ページをリロードせずにWebページを更新する
  • サーバーにデータをリクエストする-ページが読み込まれた後
  • サーバーからデータを受信する-ページが読み込まれた後
  • サーバーにデータを送信する-バックグラウンドで

XMLHttpRequestの例

以下の入力フィールドに文字を入力すると、XMLHttpRequestがサーバーに送信され、いくつかの名前の提案が(サーバーから)返されます。

Start typing a name in the input field below:

Name:

Suggestions:


XMLHttpRequestの送信

最新のブラウザにはすべて、XMLHttpRequestオブジェクトが組み込まれています。

これを使用するための一般的なJavaScript構文は、次のようになります。

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       // Action to be performed when the document is read;
    }
};
xhttp.open("GET", "filename", true);
xhttp.send();

XMLHttpRequestオブジェクトの作成

上記の例の最初の行は、XMLHttpRequestオブジェクトを作成します。

var xhttp = new XMLHttpRequest();

onreadystatechangeイベント

readyStateプロパティは、XMLHttpRequestのステータスを保持します

onreadystatechangeイベントは、readyStateが変更されるたびにトリガーされます

サーバー要求中に、readyStateが0から4に変更されます。

0:リクエストが初期化されていません
1:サーバー接続が確立されています
2:リクエストが受信されました
3:リクエストの処理
4:リクエストが終了し、応答の準備ができています

onreadystatechangeプロパティで、readyStateが変更されたときに実行される関数を指定します。

xhttp.onreadystatechange = function()

readyStateが4でステータスが200の場合、応答は準備完了です。

if (this.readyState == 4 && this.status == 200)

XMLHttpRequestのプロパティとメソッド

Method Description
new XMLHttpRequest() Creates a new XMLHttpRequest object
open(method, url, async) Specifies the type of request
method: the type of request: GET or POST
url: the file location
async: true (asynchronous) or false (synchronous)
send() Sends a request to the server (used for GET)
send(string) Sends a request string to the server (used for POST)
onreadystatechange A function to be called when the readyState property changes
readyState The status of the XMLHttpRequest
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
status 200: OK
404: Page not found
responseText The response data as a string
responseXML The response data as XML data

ドメイン間でのアクセス

セキュリティ上の理由から、最近のブラウザはドメイン間でのアクセスを許可していません。

これは、ロードしようとするWebページとXMLファイルの両方が同じサーバー上にある必要があることを意味します。

W3Schoolsの例はすべて、W3SchoolsドメインにあるXMLファイルを開きます。

上記の例を独自のWebページのいずれかで使用する場合は、ロードするXMLファイルを独自のサーバーに配置する必要があります。


responseTextプロパティ

responseTextプロパティは、応答を文字列として返します。

応答をテキスト文字列として使用する場合は、responseTextプロパティを使用します。

document.getElementById("demo").innerHTML = xmlhttp.responseText;

responseXMLプロパティ

responseXMLプロパティは、応答をXMLDOMオブジェクトとして返します。

応答をXMLDOMオブジェクトとして使用する場合は、responseXMLプロパティを使用します。

ファイルcd_catalog.xmlを要求し、その応答をXMLDOMオブジェクトとして使用します。

xmlDoc = xmlhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
    txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;

GETまたはPOST?

GETはPOSTよりも単純で高速であり、ほとんどの場合に使用できます。

ただし、次の場合は常にPOSTリクエストを使用してください。

  • キャッシュされたファイルはオプションではありません(サーバー上のファイルまたはデータベースを更新します)
  • サーバーに大量のデータを送信する(POSTにはサイズ制限はありません)
  • ユーザー入力(不明な文字を含む可能性があります)を送信するPOSTは、GETよりも堅牢で安全です

URL-サーバー上のファイル

open()メソッドのurlパラメーターは、サーバー上のファイルへのアドレスです。

xmlhttp.open("GET", "xmlhttp_info.txt", true);

ファイルには、.txtや.xmlなどの任意の種類のファイル、または.aspや.phpなどのサーバースクリプトファイル(応答を返送する前にサーバーでアクションを実行できます)を使用できます。


非同期-正誤問題?

リクエストを非同期で送信するには、open()メソッドのasyncパラメーターをtrueに設定する必要があります。

xmlhttp.open("GET", "xmlhttp_info.txt", true);

非同期でリクエストを送信することは、Web開発者にとって大きな改善です。サーバーで実行されるタスクの多くは非常に時間がかかります。

非同期で送信することにより、JavaScriptはサーバーの応答を待つ必要はありませんが、代わりに次のことができます。

  • サーバーの応答を待っている間に他のスクリプトを実行する
  • 応答の準備ができたら応答を処理します

非同期= true

async = trueを使用する場合、onreadystatechangeイベントで応答の準備ができたときに実行する関数を指定します。

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       document.getElementById("demo").innerHTML = this.responseText;
    }
};
xmlhttp.open("GET", "xmlhttp_info.txt", true);
xmlhttp.send();

非同期= false

async = falseを使用するには、open()メソッドの3番目のパラメーターをfalseに変更します。

xmlhttp.open("GET", "xmlhttp_info.txt", false);

async = falseを使用することはお勧めしませんが、いくつかの小さなリクエストではこれで問題ありません。

サーバーの応答の準備ができるまで、JavaScriptは実行を継続しないことに注意してください。サーバーがビジーまたは低速の場合、アプリケーションはハングまたは停止します。

注: async = falseを使用する場合は、onreadystatechange関数を記述しないでください。send()ステートメントの後にコードを配置するだけです。

xmlhttp.open("GET", "xmlhttp_info.txt", false);
xmlhttp.send();
document.getElementById("demo").innerHTML = xmlhttp.responseText;

XMLパーサー

最新のブラウザにはすべて、XMLパーサーが組み込まれています。

XMLドキュメントオブジェクトモデル(XML DOM)には、XMLにアクセスして編集するための多くのメソッドが含まれています。

ただし、XMLドキュメントにアクセスする前に、XMLDOMオブジェクトにロードする必要があります。

XMLパーサーは、プレーンテキストを読み取り、それをXMLDOMオブジェクトに変換できます。


テキスト文字列の解析

この例では、テキスト文字列をXML DOMオブジェクトに解析し、JavaScriptを使用してそこから情報を抽出します。

<html>
<body>

<p id="demo"></p>

<script>
var text, parser, xmlDoc;

text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

古いブラウザ(IE5およびIE6)

古いバージョンのInternetExplorer(IE5およびIE6)は、XMLHttpRequestオブジェクトをサポートしていません。

IE5およびIE6を処理するには、ブラウザーがXMLHttpRequestオブジェクトをサポートしているかどうかを確認するか、ActiveXObjectを作成します。

if (window.XMLHttpRequest) {
    // code for modern browsers
    xmlhttp = new XMLHttpRequest();
 } else {
    // code for old IE browsers
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

古いバージョンのInternetExplorer(IE5およびIE6)は、DOMParserオブジェクトをサポートしていません。

IE5およびIE6を処理するには、ブラウザーがDOMParserオブジェクトをサポートしているかどうかを確認するか、ActiveXObjectを作成します。

if (window.DOMParser) {
  // code for modern browsers
  parser = new DOMParser();
  xmlDoc = parser.parseFromString(text,"text/xml");
} else {
  // code for old IE browsers
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.loadXML(text);

その他の例


取得します リソース(ファイル)のヘッダー情報を取得します。


取得するリソース(ファイル)の特定のヘッダー情報を取得します。


するユーザーが入力フィールドに文字を入力しているときに、WebページがWebサーバーと通信する方法。


するWebページがXMLHttpRequestオブジェクトを使用してデータベースから情報を取得する方法。


取得するXMLHttpRequestを作成して、XMLファイルからデータを取得し、そのデータをHTMLテーブルに表示します。