ブラウザで AJAX (XmlHttpRequest) 呼び出しのタイムアウトを検出するにはどうすればよいでしょうか? 質問する

ブラウザで AJAX (XmlHttpRequest) 呼び出しのタイムアウトを検出するにはどうすればよいでしょうか? 質問する

ウェブで調べていますが、ドキュメントを見つけるのは困難です。ブラウザの組み込みXMLHttpRequestオブジェクトを使用した基本的な AJAX 呼び出しは誰でも知っています (ここでは最新のブラウザを想定しています)。

var xmlHttp = new XMLHttpRequest();  // Assumes native object

xmlHttp.open("GET", "http://www.example.com", false);

xmlHttp.send("");

var statusCode = xmlHttp.status;
// Process it, and I'd love to know if the request timed out

では、ブラウザで XMLHttpRequest オブジェクトを調べて、AJAX 呼び出しがタイムアウトしたことを検出する方法はありますか? 次のようなことをすることをお勧めしますかwindow.setTimeout(function() { xmlHttp.abort() }, 30000);?

ありがとう!

-マイク

ベストアンサー1

最近のブラウザ(2012)の中には、 に頼らずにこれを実行するものもありますsetTimeout。これは XMLHttpRequest に含まれています。回答を見るhttps://stackoverflow.com/a/4958782/698168:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
        alert("ready state = 4");
    }
};

xhr.open("POST", "http://www.service.org/myService.svc/Method", true);
xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhr.timeout = 4000;
xhr.ontimeout = function () { alert("Timed out!!!"); }
xhr.send(json);

おすすめ記事