使用本机XMLHttpRequest
对象,可以为事件添加事件侦听器onreadystatechange
,并在readyState
is2
或HEADERS_RECEIVED
. 这很有用,因为这可以在完成长传输之前读取 HTTP 响应标头。
然而,在 jQuery 的 AJAX 包装器中,似乎没有任何方法可以做到这一点。jQuery.ajax API 文档实际上说了以下内容。
但是,没有提供任何
onreadystatechange
机制,因为done
、fail
、always
和statusCode
涵盖了所有可能的要求。
除非我弄错了,否则所有列出的回调都会在收到整个请求后触发,这可能是在标头可用并且readyState
是2
.
有没有办法在不轮询属性的情况下向onreadystatechange
和/或readyState
2
使用 jQuery 的 AJAX 包装器添加回调?readyState
我想可以使用 来轮询readyState
AJAX 对象的属性setInterval
,但出于显而易见的原因,我认为这不是一个真正的解决方案。我也不认为修改 jQuery 的核心是一个真正的解决方案。
更新:
另一个 SO 用户将我引向了这个问题。不幸的是,这些答案似乎都不起作用。修改 jQuery 并不是真正的解决方案。使用 jQuery 创建 XHR 对象有点违背了目的。最后一个答案根本不起作用。事实上,整个问题看起来都是针对过时的 jQuery 的。