目录javascript
AJAXhtml
XMLHttpRequest java
Ajax向服务器发送请求node
Ajax接收服务器响应jquery
AJAX - onreadystatechange 事件 ajax
一次Ajax请求过程浏览器
如下是基于原生javascript的ajax异步
AJAX(Asynchronous JavaScript and XML) 异步的 JavaScript 和 XML,AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 是与服务器交换数据并更新部分网页的技术,在不从新加载整个页面的状况下,更新网页的部份内容。
传统的网页(不使用 AJAX)若是须要更新内容,必需重载整个页面。
在AJAX技术中,主要利用 JavaScript 的 XMLHttpRequest 对象来传递用户界面上的数据到服务端并返回结果。XMLHttpRequest 对象用来传递经过HTTP传递的数据,一旦数据返回到客户端就能够马上使用DOM技术来操做数据并显示到网页上。AJAX的最终目的是建立更好更快以及交互性更强的 Web 应用程序。
XMLHttpRequest 对象是 AJAX 的基础。全部现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行更新。
建立XMLHttpRequest对象
var xmlhttp = new XMLHttpRequest(); //for ie6 以上 var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); //for ie6
为了应对全部的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。若是支持,则建立 XMLHttpRequest 对象。若是不支持,则建立 ActiveXObject :
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() 方法
#GET请求 xmlhttp.open( "GET" , url , true/false ); #true表明异步,false表明同步 xmlhttp.send(); #POST请求 xmlhttp.open( "POST" , url , true/false ); xmlhttp.send(uname='admin'&pawd='pass'); #当是post请求是,send函数内填post提交的数据
如需得到来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性 | 描述 |
---|---|
responseText | 得到字符串形式的响应数据。 |
responseXML | 得到 XML 形式的响应数据。 |
例:
document.getElementById("myDiv").innerHTML=xmlhttp.responseText; ################################################################## xmlDoc=xmlhttp.responseXML; #得到服务器端响应的xml格式的数据 txt=""; x=xmlDoc.getElementsByTagName("ARTIST"); for (i=0;i<x.length;i++){ txt=txt + x[i].childNodes[0].nodeValue + "<br />"; } document.getElementById("myDiv").innerHTML=txt;
当请求被发送到服务器,服务器对咱们的请求响应时,咱们须要执行一些基于响应的任务。也就是每当 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; } }
注释:onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每一个变化
callback 回调函数是一种以参数形式传递函数给另外一个函数的函数。
若是你的网站上存在多个 AJAX 任务,那么你应该为建立 XMLHttpRequest 对象编写一个标准的函数,而后每一个ajax任务再编写不一样的执行成功后的回调函数callback。
该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):
<!DOCTYPE html> <html> <head> <script> var xmlhttp; function loadXMLDoc(url,cfunc){ //标准的ajax函数 if (window.XMLHttpRequest){ // IE7+, Firefox, Chrome, Opera, Safari 代码 xmlhttp=new XMLHttpRequest(); }else{ // IE6, IE5 代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET",url,true); xmlhttp.send(); xmlhttp.onreadystatechange=cfunc; //状态改变时执行的函数 } function myFunction() //callback回调函数 { loadXMLDoc("/try/ajax/ajax_info.txt",function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }); } </script> </head> <body> <div id="myDiv"><h2>使用 AJAX 修改文本内容</h2></div> <button type="button" οnclick="myFunction()">修改内容</button> </body> </html>
使用Ajax技术读取服务器端的数据,并显示在页面上
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax</title> <script type="text/javascript"> function foo(){ var xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","1.txt",true); #读取本路径下的1.txt文件 xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("my").innerHTML=xmlhttp.responseText; } } } </script> </head> <body> <button id="btn" οnclick="foo()">肯定</button> <p id="my">hello,word!</p> </body> </html>
1.txt文件内容
AJAX
点击肯定按钮
$.ajax({ 'url': 'xxx', success: function(data, status, xhr) { console.log("Success:"+xhr.status+": "+xhr.statusText); console.log("############################"); console.log(xhr.getAllResponseHeaders()); console.log("############################"); console.log(xhr.getResponseHeader("Content-Type")); } });
参考文章:AJAX教程