我的 JS 代码正在发送请求并监视“xhr.onreadystatechange”。有时它会收集以下日志,这是预期的:
timestamp event method readyState status
1/9/2018 9:08:43.474 xhr_readystatechange POST 1 0
1/9/2018 9:08:46.432 xhr_readystatechange POST 2 200
1/9/2018 9:08:46.432 xhr_readystatechange POST 3 200
1/9/2018 9:08:46.433 xhr_readystatechange POST 4 200
其他时候它会收集以下日志,这是不期望的:(在这种情况下,readyState 在我的应用程序超时之前的 22 秒内从未更改为 2)
timestamp event method readyState status
1/11/2018 21:36:25.390 xhr_readystatechange POST 1 0
1/11/2018 21:36:47.249 localSend failed
我明白那个:
- readyState 1 表示 xhr.open 被调用但 xhr.send 未被调用
- readyState 2 表示已调用 xhr.send 并收到响应标头
我的问题是:如果 readyState 更改为 1 但从未更改为 2/3/4,那么我的 POST 请求实际上是:
- 从未在线发送(xhr.send 尚未被调用)?如果是这样,可能是什么原因造成的?请求可以被浏览器 JS 引擎中的 xhr.send 丢弃吗?
- 或者,发送到服务器但由于某种原因被卡在那里(因此响应标头尚未准备好)。
请注意,这是在 IE 11 上。
谢谢,