学习中免不了从他人的经验总结中学习 我引用几点他人优秀言论:
ajax是一种技术方案,但并不是一种新技术。它依赖的是现有的CSS/HTML/Javascript,而其中最核心的依赖是浏览器提供的XMLHttpRequest对象,是这个对象使得浏览器可以发出HTTP请求与接收HTTP响应。( 你真的会使用XMLHttpRequest吗?)Ajax技术的核心是XMLHttpRequest对象。我们使用XMLHttpRequest对象来发送一个Ajax请求。这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。#( 深入理解XMLHttpRequest )- Ajax是对Asynchronous JavaScript + XML(异步JavaScript和XML)的简写,其本身不是一种新技术,而是一个在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括:
HTML或XHTML,CSS,JavaScript,DOM,XML,XSLT, 以及最重要的XMLHttpRequest。# ( HTTP数据请求的方式:XMLHttpRequest、ajax、fetch与axios)
XMLHttpRequest意义
XMLHttpRequest可以理解为浏览器提供的一个发送http请求的方式,不同于form等标签,xhr是由js执行。
随着发展,xhr很快就被封装成了一种技术方案Ajax,我通常说一个项目里使用了Ajax,其实就是使用了xhr进行前后台数据交互。(有的同学没有学习xhr而是直接上手Ajax所以遇到xhr会有不理解)
所以无论如何,在前端开发环境中我在网页中在浏览器中异步发送一个请求不可以避免使用底层的xhr,不管是Ajax还是axios(除了Fetch)
XMLHttpRequest版本
谈及XMLHttpRequest,就要说发展,就要提出版本的问题。XMLHttpRequest具有标准,分为Level 1和Level 2。
Level 2是对Level 1的改进,因为在标准1中存在以下问题:
- 遵守同源策略,不能跨域发送请求。
- 只能发送文本内容,不能发送超文本。
- 只能获取请求是否完成,而无法获取实时进度。 而改进后:
- 在服务器允许下,可以进行跨域。
- 支持超文本发送和接收。
- 增加
formData对象,可以发送表单信息。 - 能够实时获取请求响应进度信息。
- 可以设置超时时间。
- 更多的api接口和事件
这个标准不由我们遵守,而是看各个浏览器对标准的支持和实现。