Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有浏览器支持对正在进行的XmlHttpRequest设置超时?_Javascript_Ajax_Xmlhttprequest_Timeout_Abort - Fatal编程技术网

Javascript 是否有浏览器支持对正在进行的XmlHttpRequest设置超时?

Javascript 是否有浏览器支持对正在进行的XmlHttpRequest设置超时?,javascript,ajax,xmlhttprequest,timeout,abort,Javascript,Ajax,Xmlhttprequest,Timeout,Abort,我希望能够中止花费很长时间等待服务器结果的异步XMLHttpRequests。因为这些请求可能很长,所以在发送XHR之前设置超时是不合适的 我可以调用XMLHttpRequest.abort(),但这确实会阻止调用就绪状态更改处理程序,但它似乎不会关闭与服务器的连接,因此服务器继续工作(在Firefox和Chrome中都可以看到)。在最终从服务器接收到数据之前,服务器连接似乎不会关闭 表示XHR上的超时属性可以在任何时候设置,即使在抓取开始之后也是如此:“这意味着可以在抓取过程中设置超时属性。如

我希望能够中止花费很长时间等待服务器结果的异步XMLHttpRequests。因为这些请求可能很长,所以在发送XHR之前设置超时是不合适的

我可以调用XMLHttpRequest.abort(),但这确实会阻止调用就绪状态更改处理程序,但它似乎不会关闭与服务器的连接,因此服务器继续工作(在Firefox和Chrome中都可以看到)。在最终从服务器接收到数据之前,服务器连接似乎不会关闭

表示XHR上的超时属性可以在任何时候设置,即使在抓取开始之后也是如此:“这意味着可以在抓取过程中设置超时属性。如果发生这种情况,则仍将相对于抓取开始进行测量。”但是,在调用abort()之前或之后立即设置此属性对于等待服务器数据的XHR,在Firefox 26或Chrome 31中似乎没有效果。连接保持打开状态,直到服务器完成其工作并发送响应头

任何浏览器都支持此功能吗?还是我误解了什么?我在客户端使用Javascript,在服务器端使用JavaServlet进行测试,因此没有其他框架会妨碍测试。

您可以找到支持。还要注意,在IE中,需要在
open
方法调用之后添加
timeout
值。例如:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {/*code*/};
xhr.open(/*arguments*/);
xhr.timeout = 4000;
xhr.ontimeout = function () { /*Timeout handler*/ }
xhr.send(null);

我想问的是,在调用xhr.send()后,是否支持设置xhr.timeout,以强制关闭不需要的连接。感谢您的链接,但它只记录了哪些浏览器支持xhr.timout,而我的实验表明FF和Chrome只部分支持它-在xhr.send()之前,但在xhr.send()之后不支持。我认为,
中止
确实关闭了连接。您的问题可能是服务器没有检测到连接已关闭。例如,“在尝试向客户端发送信息之前,PHP不会检测到用户已中止连接”(从)。