我的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但从未更改为2/3/4,那么我的POST请求实际上是:
请注意,这是在IE 11上。
谢谢,
答案 0 :(得分:1)
如果readyState为1,则仅表示调用方法open
。这不能说是否发送了请求。如果调用方法send
,则客户端将与服务器建立联系。如果连接失败,将触发事件onerror
。因此,请尝试查看错误消息,并说明原因。
回答这个问题。
如果send
为1,则可能未调用readyState
,但如果您想知道调用或不调用方法send
,则应该看到代码,并在何时记录消息调用方法send。此外,如果readyState为1,并且您已经检查了方法send
被调用,则意味着客户端开始与服务器建立,因此可能是数据包正在运行,并且它可能因某种原因而陷入困境。
简而言之,readyState
无法判断方法send
是否被调用。检查的方法是查看代码,并确保调用方法send
。