1: //使用者名稱校驗的方法
2: //這個方法使用XMLHTTPRequest物件進行AJAX的非同步資料互動
3: var xmlhttp;
4: function verify(){
5: //1.使用dom的方式獲取文字框中的值
6: //document.getElementBuId("userName")是dom中獲取元素節點的一種方法,一個元素節點對應HTML頁面中的一個標籤,如果
7: //.value可以獲取一個元素節點的value屬性值
8: var userName = document.getElementById("userName").value;
9:
10: //2.建立XMLHttpRequest物件
11: //這是XMLHttpRequest兌現使用中最為複雜的一步
12: //需要這對IE和其他型別瀏覽器建立這個物件的不方式寫不同的程式碼
13: if(window.XMLHttpRequest){
14: //針對FireFox,Mozillar,opera,safari,IE7,IE8
15: xmlhttp = new XMLHttpRequest();
16: //針對某些特定版本的mozillar瀏覽器的bug修正
17: if(xmlhttp.overrideMimeType){
18: xmlhttp.overrideMimeType("text/xml")
19: }
20: }else if(window.ActiveXObject){
21: //針對IE5,IE5.5,IE6(IE7,IE8)
22: //兩個可以用於建立XMLHTTPRequest物件的控制元件名稱,儲存在一個js陣列中
23: //排在前面的版本較新
24: var activexName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
25: for(var i=0;i<activexName.length;i++){
26: try{
27: //取出一個控制元件名進行建立,如果建立成功就終止迴圈
28: //如果建立失敗,丟擲異常,然後繼續迴圈,繼續嘗試建立
29: xmlhttp = new ActiveXObject(activexName[i]);
30: break;
31: } catch(e){
32: }
33: }
34: }
35:
36: // 確認XMLHttpRequest物件建立成功
37: // if(!xmlhttp){
38: // alert("XMLHttpRequest物件建立失敗!");
39: // return;
40: // }else{
41: // //alert(xmlhttp);
42: // alert(xmlhttp.readyState);
43: // }
44:
45: //2 註冊回撥函式
46: //註冊回撥函式時只需要函式名不要加括號
47: //我們需要註冊的是函式名稱,如果加上括號,就把函式的返回值給註冊上了,這是錯誤的
48: xmlhttp.onreadystatechange = callback;
49:
50: //3設定連線資訊
51: //第一個參數列示http的請求方式。支援所有http的請求方式。主要使用get和post
52: //第二個參數列示請求的url地址,get方式的引數也在url中
53: //第三個參數列示採用非同步還是同步方式互動,true表示非同步
54: //GET方式請求的程式碼
55: //xmlhttp.open("GET","AJAXServer?name="+userName,true);
56:
57: //POST方式請求的程式碼
58: xmlhttp.open("POST","AJAXServer",true);
59: //POST方式需要自己設定http的請求頭
60: xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
61: //POST方式傳送資料
62: xmlhttp.send("name="+userName);
63:
64: //4 傳送資料,開始和伺服器端進行互動
65: //同步方式下,send這句話會在伺服器設定回來後才執行完
66: //非同步方式,send這句話執行晚會立即完成
67:
68: //GET方式
69: //xmlhttp.send(null);
70: }
71:
72: //回撥函式
73: function callback(){
74: // alert(xmlhttp.readyState);
75: //5接收響應資料
76: //判斷物件的狀態是互動完成
77: if(xmlhttp.readyState==4){
78: //判斷http的互動是否成功、
79: if(xmlhttp.status==200){
80: //獲取伺服器端返回的資料
81: //獲取伺服器端輸出的純文字資料
82: var responseText = xmlhttp.responseText;
83: //將資料顯示在頁面上
84: //通過dom方式找到div標籤所對應的元素節點
85: var divNode = document.getElementById("result");
86: //設定元素節點中的html內容
87: divNode.innerHTML=responseText;
88: }else
89:
90: {
91: alert("出錯了");
92: }
93: }
94: }