こんばんは。きわさです。
以前、FormデータをPOSTする、について書きましたが、
今回は非同期通信について備忘録です。
XMLHttpRequest
XMLHttpRequestはブラウザ上でサーバとHTTP通信を行うためのAPIです。
このように使用します。
var xhr = new XMLHttpRequest(); xhr.open('POST', 'test.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { if(xhr.readyState == 4) { alert(xhr.responseText); } } xhr.send("data=test");
open
open(method, url, async)でリクエストタイプやアクセス先を設定します。
methodではPOSTやGETなどのリクエストタイプを指定します。
urlは送信先のphpなどのファイルを指定します。
asyncは非同期通信の場合はtrueを指定します。
setRequestHeader
setRequestHeader(header, value)でリクエストヘッダを設定します。
headerではリクエストに追加したいヘッダの種類を文字列で指定します。
valueは値を文字列で指定します。
onreadystatechange
onreadystatechangeは通信状態(readyState)が変化したときに実行する関数を指定します。
readyStateが4で、通信が完了したことを表します。
responseText
responseTextには、受信したレスポンスの文字列が入っています。
send
send(data)で通信を開始します。
dataには送信するデータを設定します。
サーバ側処理
サーバ側は特に特別なことはないです。
前述の例で送信したデータを取得し、返す場合はこのようになります。
<?php $data = ""; if(!empty($_POST['data'])) { $data = $_POST['data']; } echo $data; ?>
data=testを送信したので、$_POST[‘data’]で’test’を取得し、echo $dataで返しています。
これにより、responseTextには’test’が格納されます。
と、ざっと書いてしまいましたが、こんな感じです。
formでPOSTするときと違い、ページの書き換えを行わずに通信できるので便利です。