1

我的网络应用程序的许多功能上都有此代码

function ui_editlocation(id){

var hr   = new XMLHttpRequest();

var url  = "scripts/ui_processing.php";

var ui   = "editlocation";

var vars = "ui="+ui+"&id="+id;

hr.open("POST", url, true);

hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

hr.onreadystatechange = function() {

    if(hr.readyState == 4 && hr.status == 200) {

        var return_data = hr.responseText;

        document.getElementById("ui_content").innerHTML = return_data;

    }

}

hr.send(vars);

document.getElementById("ui_content").innerHTML = "Loading...";

}

我想添加一些代码,如果 Internet 连接断开,您会收到一条消息“请检查您的 Internet 连接,单击此处重试”

此外,如果有互联网连接,我希望它在 30 秒后超时并说“我们目前对网络的需求很高,请单击此处重试”

我需要“单击此处重试”以重新发送请求

我知道这是一个很大的问题,但任何帮助将不胜感激。

谢谢卡尔

4

1 回答 1

2
function ui_editlocation(id){
var hr   = new XMLHttpRequest();
var timeout=setTimeout(function(){
    hr.abort();
    timeout=null;
    if(confirm("Do you want to try again?")){ui_editlocation(id);}
},30000);

var url  = "scripts/ui_processing.php";

var ui   = "editlocation";

var vars = "ui="+ui+"&id="+id;

hr.open("POST", url, true);

hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

hr.onreadystatechange = function() {

    if(hr.readyState == 4 && hr.status == 200) {
        if(timeout){cancelTimeout(timeout);timeout=null;}

        var return_data = hr.responseText;

        document.getElementById("ui_content").innerHTML = return_data;

    }

}

hr.send(vars);

document.getElementById("ui_content").innerHTML = "Loading...";

}
于 2012-08-31T13:54:54.470 回答