同步:同步相当于一个小整体,它有连续的一个流程,就好比你的上级让你去叫一个同事和你一起去做某件事,你去叫了你同事,但是你同事因为有点事会晚点到,所以你会处于一个等待的过程,而这个过程中你不能做任何事,直到等你同事过来之后才能做。
同步模式发出的请求会暂停所有JavaScript代码的执行,直到服务器获得响应为止,如果浏览器在连接网络时或者在下载文件时出了故障,页面就会一直挂起,这也会导致浏览器被锁死,用户其它操作必须等待请求完成才可以执行,这是一件非常令人郁闷的事。
简述:向服务器提交请求——》等待服务器处理(这个期间客户端浏览器不能做任何事)——》处理完成返回
异步:为了提高用户体验,经常会用到异步,异步的话你可以在等待你同事的过程中做些别的事情,等到他来的时候就一起工作。
再比如打电话是同步,发消息是异步,在某一刻,打电话只能是一对一,而发消息的话就可以一对多。
异步模式发出的请求,请求对象收发数据的同时,浏览器可以继续加载页面,执行其他JavaScript代码。
简述:请求通过事件触发——》服务器处理(这个时候浏览器可以做其它事)——》处理完成
AJAX中大都是异步提交,虽然可以把async参数设置为false同步提交,但是不建议把它设置为false,这就意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死,用户的其它操作必须等待请求完成才可以执行
向服务器发送请求的方式有两种:get和post
get和post请求数据的区别:
- Get请求数据相比post请求数据要更简单也更快,在大部分情况下都能使用。但是,在无法使用缓存文件(更新服务器上的文件或数据库),向服务器发送大量数据(post是没有数据量限制的),以及发送包含位置字符的用户输入时,post比get更稳定也更可靠,在这些情况下,必须选择post请求。
- 在AJAX中,get请求传递参数拼接在url后面,而post请求数据是放在send()中的,post比get更为安全。但是get传输速度比post快,这个是根据传参决定的。(post通过请求体传参,服务器通过数据流来接收,速度就稍慢一些;而get通过url传参就可以直接获取了,因此相对较快)
get请求:请求数据在url后拼接
xmlhttp.open(“GET”,“Demo.html?name=”+name,true);
post请求:请求数据放在send()中,即请求体中
xmlhttp.open(“POST”,“Test.html”,true);
xmlhttp.send(“name=Henry&lname=Ford”);
但是总体来说,post比get要稳定(传输大量的数据时,并且上传的都是重要数据,传输的文件大小,没有限制)。