page_adsence

2009年4月21日火曜日

ajaxの通信時ステータスについて

XMLHttpRequest内にはreadyStateというプロパティがあり、
それは0~4でステータスが切り替わるたびに、この数字が切り替わる。

readyStateの詳細は以下の通り。
0 : open()は呼び出されていない。
1 : open()は呼び出されたが、send()は呼び出されてない。
2 : send()は呼び出されたが、サーバからのレスポンスはまだ返ってきてない。
3 : サーバからのデータを受信中。
4 : サーバからのレスポンスの受信が完了した。

readyState==3の時にはFirefoxとIEで挙動が変わる。
Firefoxに関しては通信中に何度もonreadystatechangeが呼ばれるが、
IEではステータスが切り替わったタイミングで1度だけ呼ばれる。

var request = HTTP.newRequest();
request.onreadystatechange = function(){
    if ( request.readyState == 4 ) {
        /* request complete */
    }
}