在 XMLHTTPRequest
中,如何使用超时条件,如果在一段固定的时间内(比如 5 秒)没有来自服务器的响应,那么它应该显示一条错误消息?
换句话说,请求应该等待 5 秒,如果没有来自服务器的响应,那么它应该显示一条消息说“超时。请稍后再试”。如果代码可以同时适用于同步和异步,那就更好了。
我使用的以下代码没有超时条件。
function testXMLHTTP()
{
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
else if(xmlhttp.readyState < 4)
{
document.getElementById("myDiv").innerHTML="Loading...";
}
}
xmlhttp.open("GET","abcd.php",true);
xmlhttp.send();
}
最佳答案
如果您能够为您的项目使用外部库,您可以考虑它:jQuery's ajax module允许您为请求指定超时。在大多数浏览器(IE8+ 显然除外)中,没有使用 XMLHTTPRequest
对象处理超时的内置方法,因此您需要 set a timeout这将在一段时间后检查请求的状态。 This answer to a similar question更彻底地探讨了该特定解决方案,但我仍然建议您尽可能使用 jQuery。
关于php - 带有超时条件的 XMLHTTPRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140426/