【发布时间】:2011-01-23 13:32:00
【问题描述】:
我的页面上有多个xmlHttpRequest,我正在尝试对它们都调用abort() 方法。在 FF 中效果很好。另一方面,IE 并没有做任何该死的事情。连接没有关闭,在请求完成之前我无法导航到另一个页面。这是什么?为什么调用abort()时IE不关闭连接?
【问题讨论】:
标签: ajax internet-explorer xmlhttprequest abort
我的页面上有多个xmlHttpRequest,我正在尝试对它们都调用abort() 方法。在 FF 中效果很好。另一方面,IE 并没有做任何该死的事情。连接没有关闭,在请求完成之前我无法导航到另一个页面。这是什么?为什么调用abort()时IE不关闭连接?
【问题讨论】:
标签: ajax internet-explorer xmlhttprequest abort
我几乎从未中止过在 IE 中工作。我很累,不记得为什么 - 在你处于 readyState 4 之前无法中止(或者它可能在中止时更改为 readyState 4?)。无论哪种方式,Ajaxian 在其档案的深处都有一个解决办法:
http://ajaxian.com/archives/reusing-xmlhttprequest-without-abort
【讨论】:
会话数据通常存储在您的脚本终止之后,但是会话数据被锁定以防止并发写入 任何时候一个会话只能运行一个脚本。
例如当将框架集与会话一起使用,您将体验到由于这种锁定而一一加载的框架。 您可以通过尽快结束会话来减少加载所有帧所需的时间。
所以你可以在 ajax 脚本中使用会话
session_start();(可能会自动处理)紧随其后(尽快)session_write_close();
session_write_close(); 将“结束”当前会话并存储会话数据。
但是:session_id() 仍将提供正确的(当前)PHPSESSID,因此您可以随时通过再次执行 session_start() 重新获得对当前会话的写入权限它。
我在我的所有 ajax 脚本中都使用这种方式来实现会话处理和允许所有浏览器中的并行请求(中止)
【讨论】: