javascript - 使用 jQuery.ajax 的 HEADERS_RECEIVED 的 readState 事件

标签 javascript jquery ajax xmlhttprequest readystate

使用 native XMLHttpRequest对象,可以将事件监听器添加到 onreadystatechange事件,并在 readyState 时收到通知是 2 ,或HEADERS_RECEIVED 。 这很有用,因为这可以在长传输完成之前读取 HTTP 响应 header 。

然而,在 jQuery 的 AJAX 包装器中,似乎没有任何方法可以做到这一点。 jQuery.ajax API documentation实际上说了以下内容。

No onreadystatechange mechanism is provided, however, since done, fail, always, and statusCode cover all conceivable requirements.

除非我弄错了,否则所有列出的回调都会在收到整个请求后触发,这可能是在 header 可用之后很长一段时间,并且 readyState2 .

有没有办法给 onreadystatechange 添加回调和/或readyState 2当使用 jQuery 的 AJAX 包装器时,无需轮询 readyState属性(property)?

我想可以轮询 readyState使用 setInterval 的 AJAX 对象的属性,但出于显而易见的原因,我认为这不是一个真正的解决方案。我也不认为修改 jQuery 的核心是一个真正的解决方案。

更新:

另一位 SO 用户引导我访问 this question 。不幸的是,这些答案似乎都不起作用。修改 jQuery 并不是真正的解决方案。使用 jQuery 创建 XHR 对象有点违背了目的。而最后一个答案根本不起作用。事实上,整个问题看起来都是针对过时的 jQuery。

最佳答案

嗯,简短的回答是,由于旧版浏览器的兼容性问题,jQuery 不提供此功能。为了解决这些问题,jQuery 只是将标准降低到最低公分母。

稍微长一点的答案是它可以使用 beforeSendxhr 方法进行猴子修补,但这并不是微不足道的,特别是当您考虑遗留和跨浏览器兼容性。为了减轻疼痛,I've create a jQuery plugin就是这样。

关于javascript - 使用 jQuery.ajax 的 HEADERS_RECEIVED 的 readState 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680515/

相关文章:

javascript - 如何结束移动设备上当前的预测文本单词?

javascript - 将 JSON 数据编辑为 Firebase 格式

javascript - Ajax:Chrome 扩展:PHP 加载图像问题

Javascript递归函数不起作用

Javascript classList 添加和删除在非全局执行上下文中不起作用

javascript - 在客户端裁剪图像

重命名 asp.net 页面后 JavaScript 不工作

鼠标悬停时的 jQuery 图像 PULSE 动画,淡入另一个图像

javascript - 使用 jQuery UI 小部件时如何发现所有可用属性?

PHP 对复杂数组进行排序