Ajax は近年非常に人気があり、Ajax の本質は XMLHttpRequest であり、クライアント側で XMLHttpRequest オブジェクトを使用します。 Ajax と比較すると、サーバー側 XMLHTTP はサーバー側で XMLHttpRequest オブジェクトを使用します。サーバー側で非同期リクエストを使用するほうが不便ですが、サーバー側でHTTPリクエストを送信できるコンポーネントなので、知っておいて損はありません。
ここでは、ASP 環境でサーバー側の XMLHttpRequest を使用し、デモ コードの言語として JScript を使用することについて説明します。そのため、ASP と JScript を理解する必要があります。
サーバー側の XMLHTTP は通常、リモート ホストから Web ページやその他のコンテンツを取得するために使用されます。ニュース集約システムは通常、サーバー側の XMLHTTP オブジェクトを使用して集約されるフィードのコンテンツを取得し、XMLDOM オブジェクトを使用してフィードのコンテンツを分析します。ニュースのタイトル、著者、内容、その他の情報をフィードおよび取得してデータベースに保存し、複数のデータ ソースからのニュースをまとめて表示します。 Catch Shrimp はニュース アグリゲーターですが、ASP で書かれていません :)
ASP では、次のコードを使用して ServerXMLHTTP オブジェクトを作成できます。このオブジェクトは、サーバー側で実行するすべての操作の基礎となります。
次のようにコードをコピーします。
var xmlhttp = 新しい ActiveXObject(MSXML2.ServerXMLHTTP.5.0);
まず、ServerXMLHTTP オブジェクトのより便利なメソッドを見てみましょう。
1. abort XMLHTTPリクエストをキャンセルするメソッドです。 XMLHTTP オブジェクトがリクエストを非同期に送信し、一定時間が経過してもリクエストが返されない場合は、このメソッドを使用してリクエストをキャンセルできます。
2. getAllResponseHeaders このメソッドの戻り値は文字列です。これは、リクエスト メソッド、URI、プロトコル バージョン情報を除いた HTTP リクエストのヘッダーに相当します。
3. getResponseHeader このメソッドは、指定されたヘッダー情報を取得するために使用されます。より便利なのは、返されたデータの Content-Type、Referer などを取得することです。
4. open は、指定されたリクエストメソッド、URI、同期メソッド、認証情報などを使用してリクエストを初期化します。
5. send は HTTP リクエストを送信し、応答データの受信を待ちます。リクエストが同期的に送信された場合、send メソッドは呼び出されてからすぐに返されるのではなく、リクエストが完了するまで待機することに注意してください。非同期メソッドでリクエストすると、すぐに戻ります。さらに、send メソッドには、送信するデータを表すオプションのパラメーター本体があります。これは、POST メソッドを使用する場合に便利です。
6. setTimeout は、ServerXMLHTTP オブジェクトの 4 つのタイムアウト (ドメイン名解決、サーバーへの接続、データの送信、応答の受信) を設定します。 ServerXMLHTTP が時間内に返せず、プログラムが応答を停止することを防ぐために、対応するタイムアウト期間を設定することで ServerXMLHTTP オブジェクトを制御できます。
7. setRequestHeader は、クライアント XMLHttpRequest でリクエストのヘッダーを設定します。通常、リクエストのデータ型を設定したり、リクエスト メソッドを識別したりするために使用されます。たとえば、jquery はヘッダー識別子 X-Request-With を追加します。リクエストが XMLHttpRequest オブジェクトからのものであることを示し、サーバーが対応するアクションを実行しやすくするために発行されます。
8. waitForResponse リクエストを非同期に送信する場合、このメソッドを使用してリクエストのプロセスを制御できます。サーバーサイドスクリプトでは、クライアントのようにコールバック関数を直接使用して非同期リクエストを制御することはできません。また、リクエストを待機するためにプログラムを一定時間スリープさせるための対応する関数もありません。戻る場合は、このメソッドを使用して一定時間待機できます。
さらに、getOption、setOption、setProxy などのメソッドもあります。これらのメソッドはめったに使用されないため、ここでは紹介しません。詳細については MSDN を参照してください。
次に、ServerXMLHTTP オブジェクトのプロパティを見てみましょう。
1. onreadystatechange XMLHTTP オブジェクトの状態が変化したときのコールバック関数。この属性は非同期操作の基礎を築き、プログラムが XMLHTTP オブジェクトの状態を問い合わせることなく XMLHTTP 操作が完了したかどうかを知ることができます。
2.readyState XMLHTTP オブジェクトのステータスには 0 ~ 4 の 5 つの値があり、それぞれ次のことを表します。
0 - 初期化されていません。新しい ActiveXObject(MSXML.ServerXMLHTTP.5.0) を使用して作成されたばかりのオブジェクトの状態
1 - ロード中。この時点では、open メソッドが呼び出されていますが、データの送信に send メソッドは使用されていません。
2 - すでにロードされており、データを送信するために send メソッドが呼び出されていますが、使用可能な応答ストリームがまだありません。
3 - データのやり取りと受信 このとき、responseBody 属性と responseText 属性を使用して、取得されたデータの一部を取得できます。
4 - リクエストを完了し、すべてのデータを受信しました
通常、状態 4 を決定するだけで済みます。この時点で、すべてのデータがロードされており、responseBody 属性または responseText 属性を使用して必要なデータを取得できます。
3. status HTTP レスポンスのステータス コード。通常は 200 になります。要求されたリソースが存在しない場合は、サーバー エラー 500 などの他のステータス コードが返されます。
4. statusText HTTP 応答ステータス テキスト。応答ステータス コードの意味を説明するために使用されます。たとえば、200 OK の OK、404 Not Found の Not Found
5. responseBody は応答データのバイト配列です。これは VBScript で直接使用できますが、JScript で変換する必要があります。
6.responseTextはレスポンスデータをテキスト形式で取得します
7. responseXML は、応答データを XMLDOM オブジェクトとして返します。これは、要求されたデータが XML ドキュメントである場合に特に便利です。
8. responseStream 応答ストリーム オブジェクト。この属性は一般的には使用されません。