AJAX即“Asynchronous Javascript And XML”,是指一种建立交互式网页应用的网页开发技术。AJAX 是一种用于建立快速动态网页的技术。它能够令开发者只向服务器获取数据(而不是图片,HTML文档等资源),互联网资源的传输变得史无前例的轻量级和纯粹,这激发了广大开发者的创造力,使各式各样功能强大的网络站点,和互联网应用如雨后春笋通常冒出,不断带给人惊喜。javascript
本文首发地址为GitHub博客,写文章不易,请多多支持与关注!html
Ajax是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能颇有帮助。简单地说,在不须要从新刷新页面的状况下,Ajax 经过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。**Ajax的目的是提升用户体验,较少网络数据的传输量。**同时,因为AJAX请求获取的是数据而不是HTML文档,所以它也节省了网络带宽,让互联网用户的网络冲浪体验变得更加顺畅。java
在解释Ajax原理以前,咱们不妨先举个“领导想找小李汇报一下工做”例子,领导想找小李问点事,就委托秘书去叫小李,本身就接着作其余事情,直到秘书告诉他小李已经到了,最后小李跟领导汇报工做。git
Ajax请求数据流程与“领导想找小李汇报一下工做”相似。其中最核心的依赖是浏览器提供的XMLHttpRequest对象,它扮演的角色至关于秘书,使得浏览器能够发出HTTP请求与接收HTTP响应。浏览器接着作其余事情,等收到XHR返回来的数据再渲染页面。github
理解了Ajax的工做原理后,接下来咱们探讨下如何使用Ajax。web
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 或 POSTajax
url:文件在服务器上的位置浏览器
async:true(异步)或 false(同步) 注意:post请求必定要设置请求头的格式内容缓存
xhr.open("POST","test.html",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Henry&lname=Ford"); //post请求参数放在send里面,即请求体
复制代码
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是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状态。 readyState总共有5个状态值,分别为0~4,每一个值表明了不一样的含义
HTTP状态码(status)由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的做用。HTTP状态码共分为5种类型:
仅记录在 RFC2616 上的 HTTP 状态码就达 40 种,若再加上 WebDAV(RFC491八、5842)和附加 HTTP 状态码 (RFC6585)等扩展,数量就达 60 余种。接下来,咱们就介绍一下这些具备表明性的一些状态码。
其实经过 XMLHttpRequest或者封装后的框架进行网络请求,这种方式已经有点老旧了,配置和调用方式很是混乱,近几年刚刚出来的Fetch提供了一个更好的替代方法,它不只提供了一种简单,合乎逻辑的方式来跨网络异步获取资源,并且能够很容易地被其余技术使用。
想了解如何利用Fetch请求数据,请猛戳 fetch 如何请求常见数据格式
想了解Ajax如何请求后台数据,请猛戳 Ajax请求后台数据