有很多关于AJAX
的文章,但关于AJAX
如何实际发出HTTP
请求以及随后调用成功/错误回调的文章并不多。
我对AJAX
几乎没有疑问:
- 浏览器如何知道
XMLHttpRequest.readyState
何时更改? - 知情者如何知道下载/上传了多少内容?
- Web API 如何决定何时将
AJAX
成功回调推送到事件队列中?浏览器在AJAX
完成后会触发某个事件吗? - 从
form
提交发起的HTTP
POST
调用与通过AJAX
发起的调用有何不同。(在我的理解中,它们是相同的,但我想确认一下(。
XMLHttpRequest
是一个浏览器界面,可用于执行HTTP
请求。它的实际实现是在浏览器本身的代码中(通常C++
(。术语接口在这里很重要,使用 Javascript,您可以以异步方式与此功能进行交互。它在引擎盖下的工作方式对于JS编程来说并不有趣,并且远离您。
- 所有浏览器 API 都有自己的内部实现,浏览器对此进行管理
- 浏览器可以签出服务器发送的字节量/内容长度标头。
- 本机浏览器实现(JS无法触及(在
AJAX
调用成功后将回调推送到事件队列中。 - 它们都是
HTTP
请求的,因此以这种方式它们是相同的(假设它们使用相同的方法(。但是,窗体HTTP
会触发页面刷新,并且AJAX
调用不会刷新页面。