TECH I.S.

AJAX-XMLHttpRequest


XMLHttpRequestオブジェクトは、サーバーからデータを要求するために使用されます。


サーバーにリクエストを送信する

サーバーにリクエストを送信するには、XMLHttpRequest オブジェクトのopen()メソッドとsend()メソッドを使用します。

<div> xhttp.open("GET", "ajax_info.txt", true); xhttp.send();</div>

Method

Description

open(method, url, async) リクエストのタイプを指定します

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

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

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

<div> xhttp.open("GET", "ajax_test.asp", true);</div>

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


非同期 - 真か偽か?

サーバーリクエストは非同期で送信される必要があります。

open()メソッドのasyncパラメータをtrueに設定する必要があります。

<div> xhttp.open("GET", "ajax_test.asp", true);</div>

非同期的に送信することにより、JavaScriptはサーバーの応答を待つ必要がなくなり、代わりに次のことが可能になります。

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

asyncパラメータのデフォルト値はasync=trueです。

コードから3番目のパラメーターを安全に削除できます。

同期XMLHttpRequest(async=false)は、サーバーの応答が準備できるまでJavaScriptの実行が停止するため、お勧めしません。サーバーがビジーまたは低速の場合、アプリケーションはハングまたは停止します。


GETまたはPOST?

GETPOSTよりも簡単かつ高速で、ほとんどの場合に使用できます。

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

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

GETリクエスト

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

xhttp.open("GET", "demo_get.asp"); xhttp.send();

自分で試してみる»

上記の例では、キャッシュされた結果が得られる場合があります。これを回避するには、一意のIDをURLに追加します。

xhttp.open("GET", "demo_get.asp?t=" + Math.random()); xhttp.send();

自分で試してみる»

このメソッドを使用して情報を発信したい場合GETメソッドで、情報をURLに追加します。

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford"); xhttp.send();

自分で試してみる»

サーバーが入力を使用する方法と、サーバーが要求に応答する方法については、後の章で説明します。


POSTリクエスト

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

xhttp.open("POST", "demo_post.asp"); xhttp.send();

自分で試してみる»

HTMLフォームのようにデータをPOSTするには、setRequestHeader()を使用してHTTPヘッダーを追加します。send()メソッドで送信するデータを指定します。

xhttp.open("POST", "ajax_test.asp"); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("fname=Henry&lname=Ford");

自分で試してみる»

Method

Description

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

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

同期リクエスト

同期リクエストを実行するには、open()メソッドの3番目のパラメータをfalseに変更します。

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

クイックテストのためにasync=falseが使用されることがあります。古いJavaScriptコードにも同期リクエストがあります。

コードはサーバーの完了を待機するため、onreadystatechange関数は必要ありません。

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

自分で試してみる»

同期XMLHttpRequest(async=false)は、サーバーの応答が準備できるまでJavaScriptの実行が停止するため、お勧めしません。サーバーがビジーまたは低速の場合、アプリケーションはハングまたは停止します。

最新の開発者ツールでは、同期リクエストの使用について警告することが推奨されており、発生時にInvalidAccessError例外がスローされる場合があります。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細