xmlHttpRequest abort() method does not close the c

2019-02-22 23:30发布

I have multiple xmlHttpRequest on my page, and I am attempting to call the abort() method on them all. Works great in FF. IE, on the other hand does not do a darn thing. The connections do not close, and I am unable to navigate to another page until the requests complete. What is this? Why doesn't IE close the connections when abort() is called?

2条回答
欢心
2楼-- · 2019-02-22 23:46

Parallel-Ajax requests vs Apache-Session locking


Session data is usually stored after your script terminated, but as session data is locked to prevent concurrent writes only one script may operate on a session at any time.

When e.g. using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as possible.


So you can use sessions in ajax scripts with session_start(); (maybe handled automatically) followed immediately (soon as possible) by session_write_close();

session_write_close(); will "end" the current session and store the session data.

But: session_id() will still deliver the correct (current) PHPSESSID so you're able to re obtain write access to the current session by simply doing session_start() again at any time you need it.


I use it this way in all my ajax scripts to implement session handling and allowing parallel request (with aborting) in all browsers

查看更多
甜甜的少女心
3楼-- · 2019-02-22 23:47

I've almost never gotten abort to work in IE. I'm tired and can't remember why - something about not being able to abort until you're in readyState 4 (or maybe that it changed to readyState 4 when it aborts?). Either way, Ajaxian has a work around in the depths of its' archives:

http://ajaxian.com/archives/reusing-xmlhttprequest-without-abort

查看更多
登录 后发表回答