Ajax 异步加载
Posted 三七驿馆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax 异步加载相关的知识,希望对你有一定的参考价值。
Ajax 常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。目的在于减少网络数据的传输量、增强用户体验,今天,我们闹(lao)一闹(lao):
整理 | sk
文章总结于知乎、博客园等,详见文末
Ajax 即 “Asynchronous javascript And XML” (异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,从而使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
Ajax实际上是下面这几种技术的融合:
Xhtml 和 CSS的基于标准的表示技术
DOM 进行动态显示和交互
XML 和 XSLT 进行数据交换和处理
XMLHttpRequest 进行异步数据检索
Javascript 将以上技术融合在一起
那么 ,我们为什么需要用到 Ajax 呢。这就要从传统的网页说起了:在未使用 Ajax 之前,如果网页需要更新内容或进行验证操作时,必须重新加载整个网页。举个简单的例子,如果我们在京东上浏览商品,并将喜欢的加入了购物车,那么,这就会重新加载你当前的页面,客户端将你加入购物车的商品传给服务器之后,再重新读取你当前购物车的所有数据进行展示,此外还会对整个的浏览页面进行重新加载。
这种方式的缺点在于:首先,性能上来讲做了很多不必要的重载,其次,会中断用户的操作页面。那么 Ajax 的优势就在于局部刷新,想象一下,这相当于客户端知道你加入了购物车之后,利用 Ajax 技术实现你购物车那一局部进行与服务器的交流,同时,客户端继续执行当前的操作,有没有很神奇?
切入主题之前,我们先简单介绍一下 XML ,即可扩展标记语言(EXtensible Markup Language),其作用为数据存储和数据传输,能够实现不同应用程序之间的数据通信、不同平台间的数据通信、不同平台间的数据共享。也就是说,我们可以使用 XML 将不同的程序、不同的平台之间联系起来。
同样是传数据,那XML 与 JSON 的区别在哪呢?先说一个简单的例子,同时用 XML 和JSON 传递数据:“我爱三七驿馆”,XML 会以节点的方式传入:
<data>
<people value="我" />
<do value="爱" />
<thing value="三七驿馆" />
</data
>
<person people="我" do="爱" thing="三七驿馆" />
{
"people"
:
"我"
,
"do"
:
"爱"
,
"thing"
:
"三七驿馆"
}
三、Ajax 的使用
创建Ajax核心对象:XHR
↓
向服务器发出请求
↓
等待服务器响应并渲染页面
1. var xhr=null;
2. if (window.XMLHttpRequest)
3. {// 兼容 IE7+, Firefox, Chrome, Opera, Safari
4. xhr=new XMLHttpRequest();
5. } else{// 兼容 IE6, IE5
6. xhr=new ActiveXObject("Microsoft.XMLHTTP");
7. }
1. xhr.open(method,url,async);
2. send(string);//post请求时才使用字符串参数,否则不用带参数。
其中:
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
注意:post请求一定要设置请求头的格式内容
1. xhr.open("POST","test.html",true);
2. xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
3. xhr.send("fname=Henry&lname=Ford"); //post请求参数放在send里面,即请求体
①同步处理
1. xhr.open("GET","info.txt",false);
2. xhr.send();
3. document.getElementById("myDiv").innerHTML=xhr.responseText; //获取数据直接显示在页面上
②异步处理:相对来说比较复杂,要在请求状态改变事件中处理。
1. xhr.onreadystatechange=function() {
2. if (xhr.readyState==4 &&xhr.status==200) {
3. document.getElementById("myDiv").innerHTML=xhr.responseText;
4. }
5. }
其中:
a. responseText 获得字符串形式的响应数据,responseXML 获得XML 形式的响应数据。
b. readyState:表明客户端与客户的交互状态过程
0-(未初始化)还没有调用send()方法
1-(载入)已调用send()方法,正在发送请求
2-(载入完成)send()方法执行完成,已经接收到全部响应内容处理
3-(交互)正在解析响应内容
4-(完成)响应内容解析完成,可以在客户端调用了
c. status:体现的是服务器对请求的反馈数据是否正常
2**:操作成功收到,分析、接受
3**:完成此请求必须进一步处理
4**:请求包含一个错误语法或不能完成
5**:服务器执行一个完全有效请求失败
③GET和POST请求数据区别
知乎 | 慕课 |
https://zhuanlan.zhihu.com/p/38067984
博客园 | 静水流深a |
https://www.cnblogs.com/wangshouren/p/11647328.html
-作者-
------精彩内容推荐------
我们相约在这里,做最好的自己
▼
以上是关于Ajax 异步加载的主要内容,如果未能解决你的问题,请参考以下文章