作成 2010.01.05
更新 2015.02.22
更新 2015.02.22
Ajax の本体
XMLHttpObject
いわゆる Ajax の本体です。受信したテキストは responseText で取得できます。
なお、Internet Explorer は同じ URL を取得しようとすると2回目以降はキャッシュから取得するため、毎回違う URL にする必要があります。
function createXMLHttpRequest(){
var XMLHttpObject = null;
try{
XMLHttpObject = new XMLHttpRequest();
}catch(e){
try{
XMLHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
XMLHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
return null;
}
}
}
return XMLHttpObject;
}
メソッドとプロパティ
| メソッドとプロパティ | 機能 |
| open(METHOD, page [, async_frag [, user_name [, password] ] ]) | リクエストメソッドとページを指定します。async_frag には、true または false を指定します。true は応答を待たず、false は応答を待って処理を継続します。 |
| send(post_body) | 実際に発信します。POSTメソッドの場合は post_body に入れます。 |
| abort() | 現在実行中のリクエストを中止します。 |
| onreadystatechange(function) | 通信中の状態が変わった時にどのような処理をするか設定します。 通常、受信したときの処理を設定します。このメソッド名はすべて小文字で記述してください。 |
| setRequestHeader(field_name, field_body) | リクエストヘッダーを追加したり変更したりします。 |
| getResponseHeader(field_name) | fileld_name のレスポンスヘッダーを取得します。 |
| getAllResponseHeaders() | レスポンスヘッダーをすべて取得します。 |
| readyState | 通信の状態を取得します。文字列による比較も可能なようですが未確認です。詳細は readyState を参照してください。 |
| responseText | 受信したデータをテキスト形式で取得します。 |
| responseXML |
XML DOM形式で取得します。 サーバーから送付する際の Content-Type は application/xml または text/xml にする必要があります。 |
| status | HTTP のステータスコードを取得します。 |
| statusText | HTTP のステータスコードを文字列形式で取得します。 |
readyState
| 状態 | 値 | 説明 |
| uninitialized | 0 | オブジェクトはデータでイニシャライズされていない。 |
| loading | 1 | オブジェクトはデータをロード中である。 |
| loaded | 2 | オブジェクトのデータの読み込みが完了しています。 |
| interactive | 3 | オブジェクトはデータをロード中であっても、操作可能である。 |
| complete | 4 | コントロールは完全にロードされた。 |
使い方
GET リクエスト
var sct = (new Date()).getTime();
var httpobj = createXMLHttpRequest();
httpobj.open("GET", "test.php?sct=" + sct, true);
httpobj.onreadystatechange = function(){
if(httpobj.readyState == 4){
var textdata = httpobj.responseText;
}
};
httpobj.send(null);
POST リクエスト
リクエストヘッダーを追加する点と、send メソッドに送信データを入れる点がキモです。
var sct = (new Date()).getTime();
var p1 = "post1"
var p2 = "post2"
var p3 = "post3"
var httpobj = createXMLHttpRequest();
httpobj.open("POST", "test.php?ct=" + sct, true);
httpobj.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded; charset=UTF-8');
httpobj.onreadystatechange = function(){
if(httpobj.readyState == 4){
var textdata = httpobj.responseText;
}
};
httpobj.send("p1=" + encodeURIComponent(p1)
+ "&p2=" + encodeURIComponent(p2)
+ "&p3=" + encodeURIComponent(p3));
タグ: JavaScript