php - 带有超时条件的 XMLHTTPRequest

标签 php javascript ajax xmlhttprequest

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/

相关文章:

Php 包括使用 ajax

javascript - 分配给变量时函数未定义

javascript - 从 JQuery UI 对话框提交 MVC 部分页面

javascript - 简单的 ajaxify,没有 hash 或 hashbang url

javascript - PHP/Javascript/AJAX - 使用表单重定向页面,然后提交

php - mysql查询根据另一列的值按不同列排序

JavaScript onclick 条件表格单元格

javascript - 在现有的ajax代码中添加图像上传功能

php - 将字符串添加到除最后一个之外的所有循环项目

javascript - jquery 向下动画(100% 元素高度)