合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# AJAX教程 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。 AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。 **AJAX实例:** ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","/try/ajax/ajax_info.txt",true); xmlhttp.send(); } </script> </head> <body> <div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div> <button type="button" onclick="loadXMLDoc()">修改内容</button> </body> </html> ``` ## AJAX 实例解析 上面的 AJAX 应用程序包含一个 div 和一个按钮。 div 部分用于显示来自服务器的信息。当按钮被点击时,它负责调用名为 loadXMLDoc() 的函数: ``` <div id="myDiv"> <h2>使用 AJAX 修改该文本内容</h2></div> <button type="button" onclick="loadXMLDoc()">修改内容</button> ``` 接下来,在页面的 head 部分添加一个 标签。该标签中包含了这个 loadXMLDoc() 函数: ``` <head> <script> function loadXMLDoc() { .... AJAX 脚本执行 ... } </script> </head> ``` ## 阅读本教程前,您需要了解的知识: 阅读本教程,您需要有以下基础: * HTML和CSS基础 * JavaScript基础 如果您想学习这些基础知识,您可以在我们的首页找到相应的教程。 * * * ## AJAX 应用 * 运用 XHTML+CSS 来表达资讯; * 运用 JavaScript 操作 DOM(Document Object Model)来执行动态效果; * 运用 XML 和 XSLT 操作资料; * 运用 XMLHttpRequest 或新的 Fetch API 与网页服务器进行异步资料交换; * **注意:**AJAX 与 Flash、Silverlight 和 Java Applet 等 RIA 技术是有区分的。 # AJAX简介 * * * AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 * * * ## 您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解: * HTML / XHTML * CSS * JavaScript / DOM 如果您希望首先学习这些项目,请在我们的[首页]访问这些教程。 * * * ## 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。 有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。 ![](http://h.yiniuedu.com/2089e8c49dca533fadbc6bba5e8fac4f) ## AJAX是基于现有的Internet标准 AJAX是基于现有的Internet标准,并且联合使用它们: * XMLHttpRequest 对象 (异步的与服务器交换数据) * JavaScript/DOM (信息显示/交互) * CSS (给数据定义样式) * XML (作为转换数据的格式) AJAX应用程序与浏览器和平台无关的! * * * ## Google Suggest 在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。 Google Suggest 使用 AJAX 创造出动态性极强的 web 界面:当您在谷歌的搜索框输入关键字时,JavaScript 会把这些字符发送到服务器,然后服务器会返回一个搜索建议的列表。 * * * ## 今天就开始使用 AJAX AJAX 基于已有的标准。这些标准已被大多数开发者使用多年。 请阅读下一章,看看 AJAX 是如何工作的! # AJAX - 创建XMLHttpRequest对象 XMLHttpRequest 是 AJAX 的基础。 * * * ## XMLHttpRequest 对象 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。 XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 * * * ## 创建 XMLHttpRequest 对象 所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。 创建 XMLHttpRequest 对象的语法: *variable*\=new XMLHttpRequest(); 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象: *variable*\=new ActiveXObject("Microsoft.XMLHTTP"); 为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject : ## 实例 ``` var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } ``` # AJAX - 向服务器发送请求 * * * XMLHttpRequest 对象用于和服务器交换数据。 * * * ## 向服务器发送请求 如需将请求发送到服务器,我们使用**XMLHttpRequest**对象的**open()**和**send()**方法: ~~~ xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); ~~~ | 方法 | 描述 | | --- | --- | | open(*method*,*url*,*async*) | 规定请求的类型、URL 以及是否异步处理请求。*method*:请求的类型;GET 或 POST *url*:文件在服务器上的位置*async*:true(异步)或 false(同步) | | send(*string*) | 将请求发送到服务器。*string*:仅用于 POST 请求 ## GET 还是 POST? 与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。 然而,在以下情况中,请使用 POST 请求: * 不愿使用缓存文件(更新服务器上的文件或数据库) * 向服务器发送大量数据(POST 没有数据量限制) * 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠 ![](http://h.yiniuedu.com/06f03ba7382479d4df3bbb7bf07ff716) ![](http://h.yiniuedu.com/c239df5c2ab54f0a50f003d59ea5828c) ![](http://h.yiniuedu.com/251b33bd6306d5b8622def1d9609e974) ![](http://h.yiniuedu.com/e8f0c3357e80395dbab90e7f6080476d) ![](http://h.yiniuedu.com/1eb0c72832706b750979fe578109724b) ![](http://h.yiniuedu.com/66e94f3c1fbc924c2235087ea782a0b7) ![](http://h.yiniuedu.com/d767e8c5af4692f8c3da18d5c2893319)