超时XMLHttpRequest

我如何添加超时到以下脚本? 我希望它显示文字为“超时”

var bustcachevar = 1 //bust potential caching of external pages after initial request? (1=yes, 0=no) var loadedobjects = "" var rootdomain = "http://" + window.location.hostname var bustcacheparameter = "" function ajaxpage(url, containerid) { var page_request = false if (window.XMLHttpRequest) // if Mozilla, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject) { // if IE try { page_request = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { page_request = new ActiveXObject("Microsoft.XMLHTTP") } catch (e) {} } } else return false document.getElementById(containerid).innerHTML = '<img src="load.gif" border="0"><br><br><strong>Generating Link...</strong>' page_request.onreadystatechange = function () { loadpage(page_request, containerid) } if (bustcachevar) //if bust caching of external page bustcacheparameter = (url.indexOf("?") != -1) ? "&" + new Date().getTime() : "?" + new Date().getTime() page_request.open('GET', url + bustcacheparameter, true) page_request.send(null) } function loadpage(page_request, containerid) { if (page_request.readyState == 4 && (page_request.status == 200 || window.location.href.indexOf("http") == -1)) document.getElementById(containerid).innerHTML = page_request.responseText else if (page_request.readyState == 4 && (page_request.status == 404 || window.location.href.indexOf("http") == -1)) document.getElementById(containerid).innerHTML = '<strong>Unable to load link</strong><br>Please try again in a few moments' } 

例如使用XMLHttpRequest对象的超时属性。

 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; // Set timeout to 4 seconds (4000 milliseconds) xhr.ontimeout = function () { alert("Timed out!!!"); } xhr.send(json); 

上面的代码适合我!

干杯