这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天
AJAX
AJAX是移动动态快速创建网站的技术,它最大的优势就是在不刷新整个页面的情况下对页面进行局部更新。它可以在客户端与服务端之间异步传输数据,可以使大文件数据延迟下载解析,可以使用一个HTTP将所有数据下载下来。选择合适的传输方式和数据格式,可以显著改善和用户的交互体验。
数据传输
从最基本的数据传输层面来讲,AJAX是一种可以建立服务端与客户端之间通信而不需要重载页面的方法,有多少种方法可以实现这种通信渠道,每种方法有各自优缺点。
请求数据
- XMLHttpRequest
- Dynamic script tag insertion
- Multipart XHR
- iframes
- Comet
XMLHttpRequest
它可以异步接收和发送数据,并且可以在请求之中添加任何头信息并且和参数,并且可以读取服务器返回的头信息和响应文本。
let xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if( xhr.readyState === 4 ) {
let reqponseHeader = xhr.getAllRequestPonseHeader()
let data = xhr.reponseText;
}
}
xhr.open("GET",url, true )
xhr.setRequestHeader("X-Requested-With","XMLhttpRequest")
xhr.send(null)
当readyState等于4的时候,这次与服务器之间的交互已经完成,相应的信息已经请求到客户端上面。当readyState等于3的时候,与服务器之间的交互正在继续,数据还在继续,我们可以称这个数据交互的过程为“流”,我们可以对这个状态进行监听,对性能进行提升。
使用XMLHttpRequest的时候,我们应该对POST与GET中之间选择做一个对比,当我们只是获取数据并不是改变数据的时候,我们应该使用GET,这被称为幂等行为。GET请求有助与提升性能,如果它多次请求同一数据,这是因为他会对多次请求的相同数据缓存起来