AJAX学习
背景 最近的项目中大量地方需要使用AJAX,无奈,谁叫我既要写前台又要写后台呢,只好学习下这个技术点。 主要参考W3school文档: http://www.w3school.com.cn/ajax/index.asp 记录下这些知识点,便于日后自己查阅 下面的一些测试代码建议在W3school中测试 AJAX 基础 AJAX = Asynchronous JavaScript and XML 即:异步的JavaScript和XML AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在很多网站可以见到使用这种技术。 AJAX-XMLHttpRequest
XMLHttpRequest是AJAX的基础。XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 创建XMLHttpRequest对象的语法: variable = new XMLHttpRequest(); 但是对于老版本的Internet Explorer(IE5和IE6)却是使用ActiveX对象,所以在开发中为了适应大多数的浏览器,常使用如下: var xmlhttp; if (window.XMLHttpRequest) ?{// code for IE7+,Firefox,Chrome,Opera,Safari ?xmlhttp = new XMLHttpRequest(); ?} else ?{// code for IE6,IE5 ?xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); ?}
使用XMLHttpRequest对象的open()和send()方法: xmlhttp.open("GET","test1.txt",true); xmlhttp.send();
GET还是POST? 与POST相比,GET更简单也更快,并且在大部分情况下都能用。 然而,在以下情况中,请使用 POST 请求:
示例:GET请求 1.简单的GET请求 <html> <head> <script type="text/javascript"> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) ?{// code for IE7+,Safari ?xmlhttp=new XMLHttpRequest(); ?} else ?{// code for 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","/ajax/demo_get.asp?t=" + Math.random(),true); xmlhttp.send(); } </script> </head> <body> <h2>AJAX</h2> <button type="button" onclick="loadXMLDoc()">请求数据</button> <div id="myDiv"></div> </body> </html> 2.通过GET方法发送信息
Async=true 当使用async=true时,请规定在响应处于onreadystatechange事件中的就绪状态时执行的函数
使用XMLHttpRequest对象的responseText或responseXML属性。
1.responseText 属性 如果来自服务器的响应并非XML,请使用responseText属性。 responseText属性返回字符串形式的响应,因此您可以这样使用: document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 2.responseXML属性 如果来自服务器的响应是XML,而且需要作为XML对象进行解析,请使用responseXML属性: 请求books.xml文件: http://www.w3school.com.cn/example/xmle/books.xml 并解析响应: <html> <head> <script type="text/javascript"> function loadXMLDoc() { var xmlhttp; var txt,x,i; if (window.XMLHttpRequest) ?{// code for IE7+,IE5 ?xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); ?} xmlhttp.onreadystatechange=function() ?{ ?if (xmlhttp.readyState==4 && xmlhttp.status==200) ? ?{ ? ?xmlDoc=xmlhttp.responseXML; ? ?txt=""; ? ?x=xmlDoc.getElementsByTagName("title"); ? ?for (i=0;i<x.length;i++) ? ? ?{ ? ? ?txt=txt + x[i].childNodes[0].nodeValue + "<br />"; ? ? ?} ? ?document.getElementById("myDiv").innerHTML=txt; ? ?} ?} xmlhttp.open("GET","/example/xmle/books.xml",true); xmlhttp.send(); } </script> </head> <body> <h2>My Book Collection:</h2> <div id="myDiv"></div> <button type="button" onclick="loadXMLDoc()">获得我的图书收藏列表</button> </body> </html>
当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当readyState改变时,就会触发onreadystatechange事件。readyState属性存有XMLHttpRequest的状态信息。 下面是 XMLHttpRequest 对象的三个重要的属性:
在onreadystatechange事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。 当readyState等于4且状态为200时,表示响应已就绪: xmlhttp.onreadystatechange=function() ?{ ?if (xmlhttp.readyState==4 && xmlhttp.status==200) ? ?{ ? ?document.getElementById("myDiv").innerHTML=xmlhttp.responseText; ? ?} ?} 使用Callback函数 callback函数是一种以参数形式传递给另一个函数的函数。 如果您的网站上存在多个AJAX任务,那么您应该为创建XMLHttpRequest对象编写一个标准的函数,并为每个AJAX任务调用该函数。 该函数调用应该包含URL以及发生onreadystatechange事件时执行的任务(每次调用可能不尽相同): function myFunction() { loadXMLDoc("ajax_info.txt",function() ?{ ?if (xmlhttp.readyState==4 && xmlhttp.status==200) ? ?{ ? ?document.getElementById("myDiv").innerHTML=xmlhttp.responseText; ? ?} ?}); } AJAX-高级 ASP/PHP请求实例-AJAX用于创造动态性更强的应用程序。 http://www.w3school.com.cn/ajax/ajax_asp_php.asp AJAX可用来与数据库进行动态通信。 http://www.w3school.com.cn/ajax/ajax_database.asp AJAX可用来与XML文件进行交互式通信。 http://www.w3school.com.cn/ajax/ajax_xmlfile.asp AJAX实例 使用XMLHttpRequest对象的实例 http://www.w3school.com.cn/example/ajax_examples.asp 文章来源: http://www.54tianzhisheng.cn/2017/06/23/AJAX/?utm_source=tuicool&utm_medium=referral (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |