6

ServerXMLHTTP リクエストがタイムアウトしたときのデフォルト アクションをセットアップする方法を知っている人はいますか? MSDN サイトに従ってタイムアウト オプションを設定するために setTimeouts() を使用しています。

理想的には、リクエストを最初から再度初期化するか、タイムアウトになった場合にページを更新したいと考えています。

私は古典的なaspとjscriptを使用しています。

ここに私の要求があります:

function serverXmlHttp(url) {
    var serverXmlHttp;
    serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0");

    // set time out options
    serverXmlHttp.setTimeouts(15000,15000,15000,15000);

    // does not work
    // serverXmlHttp.ontimeout(Response.Write("page has timed out"));

    serverXmlHttp.open("GET", url, false);
    serverXmlHttp.send();

    if (serverXmlHttp.readyState == 4) {
        return serverXmlHttp.responseText;
    }
}
4

2 に答える 2

5

重要なことは、タイムアウトになっている理由を見つけることです..

リモート URL は、呼び出しページと同じアプリケーションにありますか?

その場合は、「INFO: Do Not Send ServerXMLHTTP or WinHTTP Requests to the Same Server」を参照してください。スレッドの枯渇に直面することになるからです。

于 2010-10-13T20:55:38.807 に答える
4

理解した。try/catch ステートメントを使用するだけです。

function serverXmlHttp(url) {

    try {
        var serverXmlHttp;
        serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0");

        // set time out options
        serverXmlHttp.setTimeouts(15000,15000,15000,15000);

        serverXmlHttp.open("GET", url, false);
        serverXmlHttp.send();

        if (serverXmlHttp.readyState == 4) {
            return serverXmlHttp.responseText;
        }
    catch(error) {
        // whatever I want to happen if there's an error
        Response.Write("Sorry, your request has timed out");
    }

}
于 2010-10-14T14:47:23.860 に答える