浏览器如何知道 HTTP 调用的状态已更改?



有很多关于AJAX的文章,但关于AJAX如何实际发出HTTP请求以及随后调用成功/错误回调的文章并不多。

我对AJAX几乎没有疑问:

  1. 浏览器如何知道XMLHttpRequest.readyState何时更改?
  2. 知情者如何知道下载/上传了多少内容?
  3. Web API 如何决定何时将AJAX成功回调推送到事件队列中?浏览器在AJAX完成后会触发某个事件吗?
  4. form提交发起的HTTPPOST调用与通过AJAX发起的调用有何不同。(在我的理解中,它们是相同的,但我想确认一下(。
XMLHttpRequest

是一个浏览器界面,可用于执行HTTP请求。它的实际实现是在浏览器本身的代码中(通常C++(。术语接口在这里很重要,使用 Javascript,您可以以异步方式与此功能进行交互。它在引擎盖下的工作方式对于JS编程来说并不有趣,并且远离您。

  1. 所有浏览器 API 都有自己的内部实现,浏览器对此进行管理
  2. 浏览器可以签出服务器发送的字节量/内容长度标头。
  3. 本机浏览器实现(JS无法触及(在AJAX调用成功后将回调推送到事件队列中。
  4. 它们都是HTTP请求的,因此以这种方式它们是相同的(假设它们使用相同的方法(。但是,窗体HTTP会触发页面刷新,并且AJAX调用不会刷新页面。

最新更新