首先最早是没有Ajax请求的,只有普通的HTTP请求,这个时候发送一次HTTP请求,Server端就会计算后将数据放在一个HTML网页上返回来,客户端需要刷新网页,也就是每次请求都刷新网页。Ajax请求实现了返回xml或者json数据而不是html,然后支持在html不变情况下动态更新页面内容而无需刷新。
这是HTTP和Ajax的区别。
以前我用Ajax只用了异步请求,就以为他俩的区别除了上述区别,还包括Ajax请求是异步的,HTTP是同步的,这种误解当然是错的。
不管传统的HTTP请求还是Ajax请求,都有同步和异步两种选项。
仍以Ajax请求为例,该请求最终通过JavaScript的XMLHttpRequest发送,这个请求对象实例化的时候第二个参数可以配置同步或异步,配置为同步之后会阻塞浏览器页面的线程(也可能是进程),返回结果前客户端不再响应用户请求。配置为异步之后不会阻塞浏览器线程,继续进行浏览器渲染和响应用户操作,直到response返回后回调函数处理结果。
ajax请求:
![dabbccce9ddcf37c25548b63ddbce0d0.png](https://i-blog.csdnimg.cn/blog_migrate/85f7c712f72f6c72a12dd6ba38b75cba.jpeg)
普通请求 url请求
![8abc7417bfb5d638ccb450b31f006cd9.png](https://i-blog.csdnimg.cn/blog_migrate/d6948ff954001b502096a27c3a67bf3d.jpeg)
看倒数第二行有什么不一样???
发现ajax的请求,多了一个“X-Requested-With”属性。
至于X-Requested-With的作用和设计的原因请自行了解,目前只知道它是区分ajax请求还是通过浏览器url来请求的