AJAX即“Asynchronous Javascript And XML”,Ajax是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助。简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。Ajax的目的是提高用户体验,较少网络数据的传输量。同时,由于AJAX请求获取的是数据而不是HTML文档,因此它也节省了网络带宽,让互联网用户的网络冲浪体验变得更加顺畅。
在解释Ajax原理之前,我们不妨先举个“领导想找小李汇报一下工作”例子,领导想找小李问点事,就委托秘书去叫小李,自己就接着做其他事情,直到秘书告诉他小李已经到了,最后小李跟领导汇报工作。
Ajax请求数据流程与“领导想找小李汇报一下工作”类似。其中最核心的依赖是浏览器提供的XMLHttpRequest对象,它扮演的角色相当于秘书,使得浏览器可以发出HTTP请求与接收HTTP响应。浏览器接着做其他事情,等收到XHR返回来的数据再渲染页面。
理解了Ajax的工作原理后,接下来我们探讨下如何使用Ajax。
1.创建Ajax核心对象XMLHttpRequest(兼容性)
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. }
2.向服务器发送请求
1. xhr.open(method,url,async); 2. send(string);//post请求时才使用字符串参数,否则不用带参数。
注意:post请求一定要设置请求头的格式内容
xhr.open("POST","test.html",true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.send("fname=Henry&lname=Ford"); //post请求参数放在send里面,即请求体
3.服务器响应处理(区分同步跟异步两种情况)
responseText 获得字符串形式的响应数据。
responseXML 获得XML 形式的响应数据。
①同步处理
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. }
什么是readyState?
readyState是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状态。
readyState总共有5个状态值,分别为0~4,每个值代表了不同的含义
什么是status?
HTTP状态码(status)由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
常见的状态码
仅记录在 RFC2616 上的 HTTP 状态码就达 40 种,若再加上 WebDAV(RFC4918、5842)和附加 HTTP 状态码 (RFC6585)等扩展,数量就达 60 余种。接下来,我们就介绍一下这些具有代表性的一些状态码。
③GET和POST请求数据区别
关于第一点区别,详情见下面两张图:
其实XMLHttpRequest或者封装后的框架进行网络请求,这种方式已经有点老旧了,配置和调用方式非常混乱,近几年刚刚出来的Fetch提供了一个更好的替代方法,它不仅提供了一种简单,合乎逻辑的方式来跨网络异步获取资源,而且可以很容易地被其他技术使用。
第一章坚持不婚主义的闺蜜,却在陪我去做试管时抢了我选好的小蝌蚪,我就知道她也重生了。上辈子,我想生一个混血宝宝于是去做了试管。闺蜜当时还嘲讽我在给外国人养孩子,是个彻头
2025-09-19 15:52:07
知名网文写手“林初”的连载佳作《福星儿子被关地下室后,老公破产了》是您闲暇时光的必备之选,夏以凡阳阳陈欢欢 是文里涉及到的灵魂人物,超爽情节主要讲述的是:&ldqu
2025-09-16 15:11:25
第一章:闯进来的早高峰钥匙刚**锁孔,副驾门就被一股蛮力拽开,"哐当"一声撞在旁边的路灯杆上。我还没来得及转头,一股子茉莉花香皂味就涌了进来,混着点汗湿的热气,像块刚从水里捞出
2025-09-16 14:48:35
>我穿进了一本双胞胎替身文里,成了那个被嫌弃的妹妹。>姐姐绑定白月光系统,死遁四年归来准备打脸我。>她不知道,我身上也有个系统——专门吞噬劣质系统的「清道夫」。>当她的系统
2025-09-16 11:11:03
我妈温婉了一辈子,她作为一个画家,总是沉浸在她的世界里,变得不太爱跟人交流,社恐。面对这种情况,她也只会抱以笑容,只要不触及底线,她不会生气的。也是这个软包子的脾气,我们四兄妹
2025-09-16 02:06:08
陌生男子半夜闯进我家,跟我老婆发生了关系。而我站在一旁目睹的全程。灵魂飘回家后,我才发现自以为美满的婚姻只是一场骗局。老婆一直和青梅竹马藕断丝连……苍天有眼,我竟然意
2025-09-15 18:19:02