Ajax :Asynchronous JavaScript and XML 异步Javascript和xml
传统模式:数据提交是通过表单Form来实现, 而数据获取是靠全网页刷新来重新获取整页内容。
Ajax模式 只是 通过XMLHttpRequest对象向服务器端提交希望提交的数据。
<button>按钮用来触发Ajax,id为“resText”的元素用来显示从服务器返回的HTML文本
一个小例子:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ajax1.aspx.cs" Inherits="ajax_ajax1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> <script src="../scriptJquery/jquery-1.3.2.min.js"></script> </head> <body> <form id="form1" runat="server"> <input type="button" value="Ajax提交" onclick="Ajax()" /> <div id="resText"></div> </form> </body> </html> <script> //声明一个空对象用来装入XMLHttpRequest对象 var xmlHttpReq=null; //定义一个函数,通过该函数来异步获取信息 function Ajax(){ //给XMLHttpRequest对象赋值 if(window.ActiveXObject){ //IE5 IE6 是以ActiveXObject的方式 //引入XMLHttpRequest对象的。 xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP"); }else if(window.XMLHttpRequest){//除IE5 IE6以外的浏览器 //XMLHttpRequest是window的子对象 xmlHttpReq=new XMLHttpRequest(); //实例化一个XMLHttpRequest对象 } //实例化成功后,使用open()方法初始化XMLHttpRequest对象,指定HTTP方法和要使用的服务器URL xmlHttpReq.open("GET","test.aspx",true)//调用open()方法并采用异步方式 //因为要做一个异步调用,所以需要注册一个XMLHttpRequest对象将调用的回调事件处理器 当他的readyState值改变时调用。 //当readyState值被改变时,会激发一个readyStateChange事件,可以使用onreadystatechange属性来注册该回调事件处理器。 xmlHttpReq.onreadystatechange=RequestCallBack;//设置回调函数,类似委托,将函数名指针给他 xmlHttpReq.send(null); //使用send()方法发送该请求。因为这个请求使用的是HTTP的GET方式,所以可以在不指定参数或参数为null情况下调用send()方法 //请求状态改变时,XMLHttpRequest对象调用onreadystatechange属性注册的事件处理器。xmlHttpReq.send(string)用于post } function RequestCallBack(){ //事件处理器首先检查readyState的值和HTTP状态 if(xmlHttpReq.readyState==4){//请求完成加载 if(xmlHttpReq.status==200){//响应已经成功 alert(xmlHttpReq.responseText); document.getElementById("resText").innerHTML=xmlHttpReq.responseText; } } } </script>使用XMLHttpRequest对象,不必将Web页面的所有内容都发送到服务器,而是按需发送,使用js启动一个请求并处理相应的返回值,然后使用DOM方法更新页面中的数据。
Send()方法
调用Open()后,就可以通过调用send()方法按照open()方法设定的参数将请求进行发送。当open()方法中async参数为true时,在send()方法调用后立即返回,
否则将会中断直到请求返回。
send()必须在readyState属性值为1时,调用open()方法以后才能调用。
调用send()之后到接收到响应信息之前,readyState属性的值将被设为2;
一旦接收到响应消息,readyState属性值将会设为3;响应接收完成readyState属性值设为4.
responseText属性
responseText属性包含客户端接受到的HTTP响应的文本内容。
readyState属性值=0,1,2时 , responseText属性包含一个空字符串。
readyState=3 , responseText正在接收,响应中包含客户端还未完成的响应信息。
readyState=4 , responseText 已加载,这时 responseText属性才包含完整的响应信息。