Ajax基礎知識

來源:互聯網
上載者:User
  Ajax是什麼東東,想必大家想不知道都難,所以這裡不再廢話了。
  但是這裡還要重複一下,xmlHttp的來曆,儘管本人不太喜歡微軟,但是好像微軟還是出了很多好玩的東東,包括這裡的主角--xmlHttp。
  我的理解是,xmlHttp是一個類用來支援Javascript向服務端發送訊息。最先是微軟在Internet Explorer中以ActiveX的方式來引用這個一個類,被叫做了XmlHttp。這樣一個帶來很酷玩法的傢伙誕生了。接下來,大家都覺得這個東東不錯,於是乎,Mozzila,safari...都提供了這樣一個類,差不多都叫XMLHttpRequest吧???它們都提供一種的方法和屬性,於是乎Ajax就差不多該出來了!
  因為,各家瀏覽器和微軟提供的方式不一樣,所以要使用xmlHttp的話,就要做點小動作了:CreatXmlHttp
 1 var createXmlHttp = function()
 2 {
 3    var xmlHttp;
 4    try
 5    {
 6      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
 7     }
 8     catch(e)
 9     {
10       try
11       {
12         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
13        }
14        catch(ex){}
15     }
16     if(!xmlHttp)
17     {
18       try
19      {
20        xmlHttp = new XMLHttpRequest();
21       }
22       catch(ee)
23       {
24         alert("NND,Your browse doesn't support XMLHTTP,Change It!");
25       }
26     }
27    return xmlHttp;
28 }

    這是我見過並改進後個人覺得最全面的方法,至於“Msxml2.XMLHTTP”和“Microsoft.XMLHTTP”這兩個東東到底有什麼差別,我也沒查過,你可google 或baidu一下,回頭告我,反正我是懶得查了(這幾天.net封裝Word的控制項都快把我折騰瘋了,NND,微軟出哪麼多版本哎)。
  OK,現在xmlHttp建立好了,然後就可以調用Open方法對它進行初始化:1 xmlDom = CreateXmlHttp();
2 /*下面是Open原型:
3 /xmlDom.Open(http-method,url,async,userID,password ));*/

很明顯Open方法中包含了5個參數,前三個是必要的,後兩個是可選的(在伺服器需要進行身分識別驗證時提供)。參數的含義如下所示:
http-method:HTTP的通訊方式,比如GET或是POST;這裡順便說說兩者的區別:
       1、get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一         一對應,在URL中可以看到。post是通過HTTP
post機制,將表單內各個欄位與其內容放         置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
2、 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端         用Request.Form擷取提交的資料。兩種方式的參數都可以用Request來獲得。
       3、get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。         但理論上,IIS4中最大量為80KB,IIS5中為100KB。
       4、get安全性非常低,post安全性較高。
   如果用xmlHttp方式提交的話,好像get和post的第1、2條根本沒有區別吧哈哈:)
 
url:接收XML資料的伺服器的URL地址。通常在URL中要指明ASP或CGI程式(當然也可以是aspx了)
async:一個布爾標識,說明請求是否為非同步。如果是非同步通訊方式(true),客戶機就不等待伺服器的響應;如果是同步方式(false),客戶機就要等到伺服器返回訊息後才去執行其他動作
userID:使用者ID,用於伺服器身分識別驗證
password:使用者密碼,用於伺服器身分識別驗證

   
  嗯,現在已經提交了,然後就該調用Send方法發送XML資料:1 xmlDom.send(var obj); //obj可以是字串、DOM樹或任意資料流.

   發送資料的方式分為同步和非同步兩種。在非同步方式下,資料包一旦發送完畢,就結束Send進程,客戶機執行其他的操作;而在同步方式下,客戶機要等到伺服器返回確認訊息後才結束Send進程。

  這裡重點要說的是XMLHTTP對象中的readyState屬性,其能夠反映出伺服器在處理請求時的進展狀況。客戶機的程式可以根據這個狀態資訊設定相應的事件處理方法。屬性值及其含義如下表所示:值  說明
0   Response對象已經建立,但XML文檔上傳過程尚未結束(請求沒有發出(在調用open()之前))
1   XML文檔已經裝載完畢(請求已建立但還沒有發出(調用send()之前))
2   XML文檔已經裝載完畢,正在處理中(請求已發出正在處理之中

3   部分XML文檔已經解析(請求已經處理, 通常有部分資料可用, 但伺服器還沒有完成響應)
4   文檔已經解析完畢,用戶端可以接受返回訊息(響應已完成, 可以訪問伺服器響應並使用資料)

客戶機處理響應資訊,客戶機接收到返回訊息後,進行簡單的處理,基本上就完成了C/S之間的一個互動周期。客戶機接收響應是通過XMLHTTP對象的屬性實現的:
responseText:將返回訊息作為文本字串;
responseBody:將返回訊息作為HTML文檔內容;
responseXML:將返回訊息視為XML文檔,在伺服器響應訊息中含有XML資料時使用;
responseStream:將返回訊息視為Stream對象 

  別附:

 XmlHttp的status屬性:  200:表示一切順利  404:表示找不到頁面
 網上有個哥們說,在本地測試的話不管是正常還是找不到頁面都會返回0這個值,但我沒有碰到過,寫在這裡或許能幫你一把呵呵

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.