项目中包括一个.aspx页面和一个getTime.ashx页面。
getTime.ashx
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
context.Response.Write(DateTime.Now.ToString());
}
public bool IsReusable {
get {
return false;
}
}
}
.aspx
注:以下代码都是放在...的位置
<script type="text/javascript">
function loadXMLDoc() //点击按钮调用函数
{
....
}
</script>
一、创建异步对象实例
创建 XMLHttpRequest 对象的语法:
var xmlhttp = new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
为了应对所有的现代浏览器:
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");
}
二、利用异步对象的open方法赋值相应的参数
xmlhttp.open("GET", "getTime.ashx", true); //调用文件的url和当前的.aspx页面在同一根目录下
三、设置回掉参数
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200) //表示当前请求已经完成并正常响应,否则运行时会出现很多次alert
{
alert(xmlhttp.responseTsxt);
}
}
其中,
onreadystatechange属性:每次状态改变都会触发这个事件的处理器;
readystate属性:用来表示请求的状态
0----表示未初始化,次数对象已建立,但是未初始化(没有调用open()方法)
1----表示正在加载,此时对象已建立,但是为调用send()
2----表示已经加载,send()已调用,但是当前的状态以及http头未知
3----表示交互中,接收了部分数据,此时不能获取数据 因为响应和报文头不全
4----表示完成。
status属性:
200----表示服务器能够正常响应
四、利用send()方法将第2步设置好的参数发出请求
xmlhttp.send();
本质是浏览器正在做该做的事,使唤XMLHttpRequest这个对象去执行.ashx中的操作。执行之后返回