028-86261949

当前位置:首页 > 技术交流 > http请求和ajax请求的区别?

http请求和ajax请求的区别?

2020/07/27 10:03 分类: 技术交流 浏览:0

首先两者的本质区别:AJAX通xmlHttpRequest象请求服务器服务器接受请求返数据实现刷新交互;普通http请求通httpRequest象请求服务器接受请求返数据需要页面刷新。

什么是http请求呢?发送一个http请求请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。我们从百度百科可以看到请求报文的一般格式:

 

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文,下图是百度百科的四个组成:

什么是ajax请求呢? AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。ajax是一种浏览器通过js异步发起请求,局部更新页面的技术。Ajax请求的局部更新,浏览器地址栏不会发生变化。局部更新不会舍弃原来页面的内容。

Ajax请求相比http请求,AJAX请求头会多一个x-requested-with参数,值为XMLHttpRequest,这是不同点。

2.ajax请求和http请求的相同点

不管传统的HTTP请求还是Ajax请求,都有同步和异步两种选项,这是相同点。

 

以Ajax请求为例,该请求最终通过JavaScript的XMLHttpRequest发送,这个请求对象实例化的时候第二个参数可以配置同步或异步,配置为同步之后会阻塞浏览器页面的线程(也可能是进程),返回结果前客户端不再响应用户请求。配置为异步之后不会阻塞浏览器线程,继续进行浏览器渲染和响应用户操作,直到response返回后回调函数处理结果。

3.使用同步和异步的场景

异步:在异步模式下,当我们使用AJAX发送完请求后,可能还有代码需要执行。这个时候可能由于种种原因导致服务器还没有响应我们的请求,但是因为我们采用了异步执行方式,所有包含AJAX请求代码的函数中的剩余代码将继续执行。如果我们是将请求结果交由另外一个JS函数去处理的,那么,这个时候就好比两条线程同时执行一样。

同步:在同步模式下,当我们使用AJAX发送完请求后,后续还有代码需要执行,我们同样将服务器响应交由另一个JS函数去处理,但是这时的代码执行情况是:在服务器没有响应或者处理响应结果的JS函数还没有处理完成return时,包含请求代码的函数的剩余代码是不能够执行的。就好比单线程一样,请求发出后就进入阻塞状态,知道接触阻塞余下的代码才会继续执行。

什么时候用用同步模式呢?当你向服务器获取数据,需要等待数据返回后再继续其他代码时,这时候就可以同步模式。在实际开发项目中,如要获取下拉数据后并要显示用户之前选择的选项,这时候就需要先获取下拉选项后再选择用户选择的选项,有一个先后顺序,则必须选择用同步模式。

#标签:ajax,http,H5,前端