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

时间:2018-08-22 17:43:09

标签: javascript ajax

关于AJAX的文章很多,但是关于AJAX实际如何发出HTTP请求以及随后调用suceess /错误回调的文章很少。

我对AJAX几乎没有疑问:

  1. 浏览器如何知道XMLHttpRequest.readyState何时更改?
  2. 知道者如何知道已下载/上传了多少内容?
  3. Web API如何确定何时将AJAX成功回调推入事件队列? AJAX完成后,浏览器会触发某些事件吗?
  4. HTTP提交发起的POST form呼叫与通过AJAX发起的呼叫有何不同。 (据我了解,它们是相同的,但我想确认一下。)

1 个答案:

答案 0 :(得分:0)

XMLHttpRequest是一个浏览器界面,可用于执行HTTP请求。实际的实现是在浏览器本身的代码中(通常为C++)。术语“接口”在这里很重要,您可以使用Javascript以异步方式接口使用此功能。对于JS编程而言,它的内幕工作方式并不有趣,并且可以从您身上抽象出来。

  1. 所有浏览器API都有自己的内部实现,浏览器对此进行管理
  2. 浏览器可以检查服务器发送的字节数/ Content-Length标头。
  3. AJAX调用成功后,本机浏览器实现(JS无法触摸)将回调推送到事件队列中。
  4. 它们都是HTTP请求,因此以相同的方式(假设它们使用相同的方法)。但是,表单HTTP确实会触发页面刷新,并且AJAX调用不会刷新页面。