1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script type="text/javascript">
5 window.onload = function(){
6 //1,取得a节点,并为其添加onclick响应函数。
7 document.getElementsByTagName("a")[0].onclick = function(){
8 //3,创建一个XMLHttpRequest对象
9 var request = new XMLHttpRquest();
10 //4,准备发送请求的url
11 var url = this.href;
12 //带时间戳的url: url = this.href + "?time" + new date() (这里的date()对象是js的对象)
13 //使用这种url,每次都会new一个新的date对象,保证每次时间更新。能起到禁用缓存的效果
14 var method = "GET";
15 //5,调用XMLHttpRequest对象的open方法
16 //open(method, url asynch)
17 //XMLHttpRquest的open方法允许程序员用一个ajax调用向服务器发送请求
18 //参数:method,请求类型,类似于"GET"或者"POST"的字符串。若只想从服务器检索一个文件,而不
19 //需要发送任何数据,使用GET(可以在GET请求里面通过附加在URL上的查询字符串来发送数据,不过
20 //数据大小限制为2000个字符)。若需要向服务器发送数据,用POST。
21 //在某些情况下,有些浏览器会把多个XMLHttpRequest请求的结果缓存在同一个URL,如果对每个请求
22 //的响应不同,就会带来不好的结果。在此将时间戳追加到URL的最后,就能确保URL的唯一性,从而
23 //避免浏览器缓存结果。
24 //参数:url,路径字符串,指向你所请求的服务器上的那个文件。可以是绝对路径或者相对路径。
25 //参数:asynch,表示请求是否要异步传播,默认值为true。指定true,在读取后面的脚本之前,不需
26 //要等待服务器的响应。指定false,当脚本处理过程中经过这点时,会停下来,一直等到ajax请求执行
27 //完毕再继续执行
28 request.open(method, url);
29 //6,调用XMLHttpRequest对象的send方法
30 //request.setRequestHeader("ContentType", "application/x-www.hello.com");
31 //request.send("name='foratest'");
32 request.send(null);
33 //7, 为XMLHttpRequest对象添加onreadystatechange响应函数
34 //onreadystatechange事件处理函数由服务器触发,而不是用户
35 //在ajax执行过程中,服务器会通知客户端当前的通信状态。这依靠更新XMLHttpRquest对象的
36 //readyState来实现。改变readystate属性是服务器对客户端连接操作的一种方式。
37 //每次readystate属性的改变都会触发readystatechange事件。如果把onreadystatechange事件处理函
38 //数赋给一个函数,那么每次readyState值的改变都会引发该函数的执行。
39 //readystate属性表示Ajax请求的当前状态。它的值用数字代表。
40 //0代表未初始化,还没有调用open方法。
41 //1代表正在加载,open方法已经被调用,send方法还没有被调用。
42 //2代表已加载完毕,send已被调用,请求已经开始。
43 //3代表交互中,服务器正在发送响应。
44 //4代表完成。响应发送完毕。
45 //readyState值的变化会因浏览器的不同而有所差异,但是当请求结束的时候,每个浏览器都会把
46 //readyState的值统一设为4
47 request.onreadystatechange = function(){
48 //8,判断响应函数是否完成:XMLHttpReauest对象的readyState 属性值为4 的时候
49 //status:服务器发送的每一个响应也都带着首部信息,三位数的状态码是服务器发送的响应中最重要
50 //的首部信息,并且属于超文本传输协议中的一部分。
51 //常用状态吗机器含义:
52 //404没找到页面(not found)
53 //403禁止访问(forbidden)
54 //500内部服务器出错(internal service error)
55 //200一切正常(OK)
56 //304没有被修改(not modified)
57 //在XMLHttpRequest对象中,服务器发送的状态码都保存在status属性里。通过把这个值和200或304
58 //比较,可以确保服务器是否已成功发送一个成功的响应
59 if(request.status == 200 || request.status == 304){
60 alert(request.responseText);
61 }
62 }
63 return false;
64 }
65 }
66 </script>
67 </head>
68 <body>
69 <a href="helloajax.txt">hello ajax !</a>
70 </body>
71 </html>