最新のWeb開発のチュートリアル
 

AJAX - サーバに要求を送ります


XMLHttpRequestオブジェクトは、サーバとデータを交換するために使用されます。


要求をサーバーに送信

サーバーに要求を送信するために、我々は使用open()send() XMLHttpRequestオブジェクトのメソッドを:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
方法 説明
open(method, url, async) 要求のタイプを指定します。

method :要求のタイプ: GETまたはPOST
url :サーバ(ファイル)の場所
asynctrue (非同期)またはfalse (同期)
send() (のために使用するサーバーにリクエストを送信しますGET
send(string) (のために使用するサーバーにリクエストを送信POST

GETPOST

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

しかし、常に使用しPOST際にリクエストを:

  • キャッシュされたファイルは、(サーバー上のファイルやデータベースを更新)オプションではありません。
  • サーバーに大量のデータを送信( POSTないサイズの制限がありません)。
  • (未知の文字を含めることができます)、ユーザー入力を送信する、 POSTより堅牢で安全であるGET

GETリクエストを

シンプルなGETリクエスト:

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
»それを自分で試してみてください

上記の例では、キャッシュされた結果を得ることができます。 これを回避するには、ユニークな追加ID to the URL: ID to the URL:

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
»それを自分で試してみてください

あなたが情報を送信する場合GETメソッド、URLに情報を追加します。

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
»それを自分で試してみてください

POSTリクエスト

シンプルなPOSTリクエスト:

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
»それを自分で試してみてください

するにはPOST 、HTMLフォームのようにデータを追加するHTTP header用いてsetRequestHeader() あなたが送信したいデータを指定しsend()メソッドを:

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
»それを自分で試してみてください

方法 説明
setRequestHeader(header, value) リクエストにHTTPヘッダーを追加します。

header :ヘッダー名を指定します
value :ヘッダ値を指定します

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

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

xhttp.open("GET", "ajax_test.asp", true);

ファイルは.aspファイルと(バック応答を送信する前に、サーバー上のアクションを実行することができます)の.phpなどの.txtファイルおよび.xml、またはサーバーのスクリプトファイルと同様に、ファイルの任意の種類とすることができます。


非同期- TrueまたはFalse

AJAXは、非同期JavaScriptとXMLの略で、AJAXのように動作するXMLHttpRequestオブジェクトのために、 asyncのパラメータopen()メソッドをtrueに設定する必要があります。

xhttp.open("GET", "ajax_test.asp", true);

非同期要求を送信すると、Web開発者のための巨大な改善です。 サーバー上で実行されるタスクの多くは、非常に時間がかかります。 AJAXの前に、この操作は、アプリケーションがハングまたは停止する可能性があります。

AJAXを使用すると、JavaScriptは、サーバーの応答を待つ必要はありませんが、その代わりにすることができません:

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

Async=true

クラス= "notranslate"非同期=真を使用する場合、応答はonreadystatechangeイベントで準備ができたときに実行する関数を指定します。

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
»それを自分で試してみてください

あなたは後の章でonreadystatechangeについての詳細を学びます。


Async=false

使用するにはasync=false 、第三のパラメータを変更するopen() falseにする方法:

xhttp.open("GET", "ajax_info.txt", false);

使用してasync=falseお勧めしませんが、いくつかの小さな要求のために、これは大丈夫であることができます。

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

注:使用するとasync=false 、onreadystatechange関数を記述しないでください-直後のコードを入れてsend()ステートメント:

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
»それを自分で試してみてください