一、XMLHttpRequest 对象的方法与属性
方 法 |
描 述 |
abort() |
停止当前请求 |
getAllResponseHeaders() |
把HTTP请求的所有响应首部作为键/值对返回 |
getResponseHeader("header") |
返回指定首部的串值 |
open("method", "url") |
建立对服务器的调用。method参数可以是GET、POST或PUT。url参数可以是相对URL或绝对URL。这个方法还包括3个可选的参数 |
send(content) |
向服务器发送请求 |
setRequestHeader("header", "value") |
把指定首部设置为所提供的值。在设置任何首部之前必须先调用open() |
属 性 |
描 述 |
onreadystatechange |
每个状态改变时都会触发这个事件处理器,通常会调用一个JavaScript函数 |
readyState |
请求的状态。有5个可取值:0 = 未初始化,1 = 正在加载,2 = 已加载,3 = 交互中,4 = 完成 |
responseText |
服务器的响应,表示为一个串 |
responseXML |
服务器的响应,表示为XML。这个对象可以解析为一个DOM对象 |
status |
服务器的HTTP状态码(200对应OK,404对应Not Found(未找到),等等) |
statusText |
HTTP状态码的相应文本(OK或Not Found(未找到)等等) |
二、使用XMLHttpRequest 实现ajax效果
<!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>xmlhttprequest ajax demo</title> <script type="text/javascript" language="javascript"> var req; // 定义变量,用来创建xmlhttprequest对象 function createReq() { var url = "ajax.aspx"; //要请求的服务端地址 if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHttp"); //IE(6.0及以下版本)浏览器用activexobject对象创建, //如果用户浏览器禁用了ActiveX,可能会失败 } if (req)//对象创建成功 { req.open("GET", url, true); //与服务端建立连接(请求方式post或get,地址,true表示异步) req.onreadystatechange = callback; //指定回调函数 req.send(url); //发送请求 } } function callback() { if (req.readyState == 4) { if (req.status == 200) { Display(); } else { alert("服务端返回状态" + req.statusText) } } else { document.getElementById("myTime").innerHTML = "数据加载中"; } } function Display() { document.getElementById("myTime").innerHTML = req.responseText; } </script> </head> <body> <form id="form1" runat="server" action="" method="post"> <div> <div id="myTime"> </div> <input type="button" value="Get Time" onclick="createReq();" /> </div> </form> </body> </html>
ajax.aspx.cs代码:
public partial class ajax : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { System.Threading.Thread.Sleep(1000); //为了看到ajax效果,将当前线程延时1000毫秒 Response.Write(DateTime.Now.ToString()); //输出当前时间 Response.End(); } }