• AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
  • AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
  • XMLHttpRequest 对象是 AJAX 的基础。

所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。
创建 XMLHttpRequest 对象的语法:

var request = new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

var request = new ActiveXObject("Microsoft.XMLHTTP");

为了应对所有的现代浏览器,包括 IE5 和 IE6,可以检查浏览器是否支持 XMLHttpRequest 对象。

var request;
if(window.XMLHttpRequest){request = new XMLHttpRequest();
}else{request = new ActiveXObject("Microsoft.XMLHTTP");
}
  • XMLHttpRequest 对象用于在后台与服务器交换数据

如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open()send() 方法:

var request = new XMLHttpRequest();request.open('GET', 'test.txt', true);
request.send();
方法 描述
open(method,url,async) 规定请求的类型、URL 以及是否异步处理请求。
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
asynctrue(异步)或 false(同步)
send(string) 将请求发送到服务器。
string:仅用于 POST 请求

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:

  1. 无法使用缓存文件(更新服务器上的文件或数据库)
  2. 向服务器发送大量数据(POST 没有数据量限制)
  3. 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
GET 请求

下面是一个简单的 GET 请求。

<html>
<head><script type="text/javascript">function loadXMLDoc(){var request;if(window.XMLHttpRequest){request = new XMLHttpRequest();}else{request = new ActiveXObject("Microsoft.XMLHTTP");}request.onreadystatechange = function(){if(request.readyState === 4 && request.status === 200){document.getElementById("div1").innerHTML = request.responseText;}}request.open("GET", "demo_get.asp", true);request.send();}</script>
</head>
<body><button type="button" onclick="loadXMLDoc()">请求数据</button><div id="div1"></div>
</body>
</html>

在上面的例子中,可能得到的是缓存的结果。为了避免这种情况,可以向 URL 添加一个唯一的 ID:

request.open("GET", "demo_get.asp?t=" + Math.random(), true);

如果您希望通过 GET 方法发送信息,请向 URL 添加信息:

request.open("GET", "demo_get.asp?fname=Bill&lname=Gates", true);
POST 请求

下面是一个简单的 POST 请求。

<html>
<head><script type="text/javascript">function loadXMLDoc(){var request;if(window.XMLHttpRequest){request = new XMLHttpRequest();}else{request = new ActiveXObject("Microsoft.XMLHTTP");}request.onreadystatechange = function(){if(request.readyState === 4 && request.status === 200){document.getElementById("div1").innerHTML = request.responseText;}}xmlhttp.open("POST", "demo_post.asp",true);request.send();}</script>
</head>
<body><button type="button" onclick="loadXMLDoc()">请求数据</button><div id="div1"></div>
</body>
</html>

如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:

request.open("POST", "ajax_test.asp", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("fname=Bill&lname=Gates");
方法 描述
setRequestHeader(header,value) 向请求添加 HTTP 头。
header: 规定头的名称
value: 规定头的值

服务器响应

如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseTextresponseXML 属性。

属性 描述
responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据。

responseText 属性返回字符串形式的响应,因此您可以这样使用:

document.getElementById("div1").innerHTML = request.responseText;
  • 当请求被发送到服务器时,每当 readyState 改变时,就会触发 onreadystatechange 事件。
  • readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

属性 描述
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status 200: "OK"
404: 未找到页面

readyState 等于 4 且状态为 200 时,表示响应已就绪:

request.onreadystatechange = function(){if(request.readyState === 4 && request.status === 200){document.getElementById("div1").innerHTML = request.responseText;}
}

注释onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。

AJAX(异步的 JavaScript 和 XML)相关推荐

  1. [Ajax]异步的 JavaScript 和 XML:Ajax入门教程(整理)

    首先先来解释一下什么是 AJAX . 简单来说AJAX = 异步 JavaScript 和 XML, 是一种用于创建快速动态网页的技术. 它不是一种编程语言,而是一种规范. Ajax的主要功能是:通过 ...

  2. Ajax→异步的JavaScript和XML、HTTP请求响应、Ajax简介同步异步、XMLHttpRequest类的方法及属性、原生Ajax、Koa实现Ajax、接口文档、浏览器同源策略、反向代理

    浏览器服务器 HTTP请求响应 数据库后端语言 Ajax简介同步异步 Koa前端框架 XMLHttpRequest类的方法及属性 原生Ajax Koa实现Ajax JSON DOM 接口文档 浏览器同 ...

  3. AJAX (异步 javascript 和 xml)

    用 form 可以发请求,但是会刷新页面或新开页面 用 a 可以发 get 请求,但是也会刷新页面或新开页面 用 img 可以发 get 请求,但是只能以图片的形式展示 用 link 可以发 get ...

  4. AJAX(Asynchronous JavaScript And XML,异步JavaScript + XML)

    AJAX,最初是由Adaptive Path公司的Jesse James Garrett提出来的.AJAX的工作原理相当于在用户和服务器之间加了-个中间层,使用户操作与服务器响应异步化. Jesse ...

  5. AJAX(Asynchronous JavaScript And XML)

    AJAX(Asynchronous JavaScript And XML):异步的javascript和xml技术 作用:在不刷新整个页面的情况下,通过XMLHttpRequest向后台偷偷发起请求, ...

  6. 一次ajax多次回调结果,Ajax异步的回调函数执行了多遍

    [Java]JDK类 CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用 ...

  7. 14 Flask mega-tutorial 第14章 Ajax(百度翻译API):异步JavaScript和XML的缩写(Asynchronous Javascript And XML)

    如需转载请注明出处. win10 64位.Python 3.6.3.Notepad++.Chrome 67.0.3396.99(正式版本)(64 位) 注:作者编写时间2018-03-07,linux ...

  8. 【JavaScript】AJAX总结(异步JavaScript和XML)

    AJAX介绍 通过 AJAX,你可以创建更好.更快以及更友好的 WEB 应用程序. AJAX 基于 JavaScript 和 JavaScript的XMLHttpRequest对象. AJAX 应用程 ...

  9. 雷神javaweb缺失--》Ajax:异步 JavaScript 和 XML

    AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML). 通过 AJAX,JavaScript 无需等待服务器的响应,而是: 在等待服 ...

最新文章

  1. vscode更改编码_装上后这 10个扩展后,VSCode 真的是无敌的存在
  2. Unisys:信息安全新关键——微分割
  3. jdbc oracle 连接串
  4. NIFI使用过程中的invalid component问题解决
  5. 电话光端机的电话接口类型有哪些?
  6. 数据结构(六)查找---多路查找树(2-3-4树)
  7. WebService.asmx架设后,显示调用按钮的方法
  8. 机器学习基石-作业二-第10题分析
  9. 基础编程题目集 6-8 简单阶乘计算 (10 分)
  10. prettyping.sh: ping 之美
  11. finding the way
  12. linux定位到文件,locate 在linux下快速定位文档
  13. caffe-ssd中非极大值抑制NMS的原理和实现方法
  14. 500多套微精品信小程序源码部分带后台,不同行业的源码集合,适合快速开发和自己学习
  15. matlab 图像处理之直线拟合
  16. 酷派删除android系统软件,Coolpad酷派8720L哪些系统软件可以删除(精简列表)
  17. WPS文字表格自动填充序号
  18. 入股不亏的文案编辑工具
  19. 找一份好工作只需要这几招
  20. 微信群机器人微云助手微小云微信群淘客助手如何设置好券直播淘宝联盟优惠券自动群发

热门文章

  1. 简单工厂(Simple Pattern)模式
  2. 移动互联网实战--资源类APP的数据存储处理和优化
  3. FRAMESET使用收集
  4. C#正则表达式编程(四):正则表达式
  5. 8.3、Spring Profiles 功能及内部原理
  6. linux机器不能上网,Deepin Linux 无法上网
  7. 2.1_stack_栈
  8. 服务器和硬盘如何区分,服务器硬盘和普通硬盘区别介绍
  9. orderquery.php,multiOrderQuery.php
  10. Integer 与 int 中的 ==