通信タイムアウトの処理

タイムアウトしたときエラーメッセージを表示します。

JavaScriptのソースコード

//グローバル変数
var request;
var timerId;
function send() {
  //5000ミリ秒経過するとtimeout()を実行する
  timerId = setInterval('timeout()', 5000);

  var url = "sample03.cgi";
  request = createXMLHttpRequest();
  request.open("GET", url, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
      //受信完了時の処理
      clearInterval(timerId); //タイマーを終了する
      //結果を表示
      document.getElementById("result").innerHTML = '通信に成功しました。'
    }
  }
  request.send("");
  //状態を表示
  document.getElementById("result").innerHTML = '通信中です。';
}
//タイムアウトの処理
function timeout() {
  //タイマーを終了する
  clearInterval(timerId);
  //通信を中断する
  request.abort();
  //エラーメッセージを表示
  document.getElementById("result").innerHTML = 'タイムアウトです。';
}

CGIのソースコード

#!/usr/bin/perl

use strict;

#現在時刻が偶数秒なら5秒待機する
sleep(5) if ((localtime(time))[0] % 2 == 0);

print "Content-Type: text/plain; charset=Shift_JIS\n";
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n";
print "ok";

通信結果は↓に表示します。

このページは、「パラメータを送信する」のサンプルプログラムです。