建立XMLHttpRequest對象的一個執行個體(只需要檢測瀏覽器是否支援ActiveX控制項)
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
XMLHttpRequest不能請求指令碼所在域之外的資源
XMLHttpRequest將請求發送給伺服器
XMLHttpRequest對象的send()方法把請求發送到指定的目標資源。send()方法接受一個參數,通常是一個串或一個DOM對象。這個參數作為請求體的一部分發送到目標URL。當向send()方法提供參數時,要確保open()中指定的方法是POST。
如果沒有資料作為請求體的一部分被發送,則使用null。
一般情況下,使用Ajax提交的參數多是些簡單的字串,可以直接使用GET方法將要提交的參數寫到open方法的url參數中,此時send方法的參數為null。
例如 :
var url = "login.jsp?user=XXX&pwd=XXX";
xmlHttpRequest.open("GET",url,true);
xmlHttpRequset.send(null);
此外,也可以使用send方法傳遞參數。使用send方法傳遞參數使用的是POST方法,需要設定Content-Type頭資訊,類比HTTP POST方法發送一個表單,這樣伺服器才會知道如何處理上傳的內容。參數的提交格式和GET方法中url的寫法一樣。設定頭資訊前必須先調用open方法。
例如:
xmlHttpRequest.open("POST","login.jsp",true);
xmlHttpRequest.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xmlHttpRequest.send("user="+username+"&pwd="+password);
需要注意的是根據提交方式的不同,兩種提交方式分別調用背景doGet方法和doPost方法。
在請求URL時加上時間戳記的好處:
在有些情況下某些瀏覽器會把XMLHttpRequest請求的結果緩衝在同一個URL上.但是實際上雖然對相同URL的請求在不同時間也會有不同的結果.當把時間戳記追加到URL的最後,就能夠確保URL的唯一性,從而避免瀏覽器緩衝結果.
利用XMLHttpRequest的post方法可以在請求體中發送各種內容(XML,位元據)
使用JSON來傳輸資料.JSON是一種文字格式設定,獨立於具體語言,可以將資料結構進行序列化.
最佳實務
:在用戶端編寫的每一個驗證常式都必須在伺服器上以某種方式重寫,因為使用者可能禁用javascript.
讀取相應頭部
某些情況下我們只想讀取伺服器發出的響應首部,而忽略內容。,完成這樣一個請求的標準做法是使用HEAD請求,而不是前面討論的GET或POST請求。當伺服器對HEAD請求做出響應時,它只發送響應首部而忽略內容,即使可以向瀏覽器返回所請求的內容,也不會真的把內容返回。由於忽略了內容,對HEAD請求的響應比對GET或POST的響應就小得多。
通過讀取響應首部,可以得出Content-Type(內容類型)、Content-Length
(內容長度),甚至Last-Modified(最後一次修改)的日期。
實現方式:在Open的第一個參數設定為"HEAD".xmlHttp.open("HEAD",url,true);
getAllResponseHeaders()方法的用途很有限,因為它把所有響應首部放在一起作為串返回。要想使用getAllResponseHeaders()方法來擷取單個的響應首部,就需要解析返回的串,尋找所關注的響應首部。
getResponseHeader方法可以通過只返回一個響應首部的值解決這個問題。這個方
法取一個串參數,該參數表示所需響應首部的名字(就是你想得到這個響應首部
的值)。
Firefox工具
HTML Validator 尋找並標誌出HTML頁面上的錯誤
webdeveloper
Greasemonkey
Venkman
其他工具
JSLint(網頁) 完成JavaScript語法檢查
JSUnit(javascript單元測試) 用於測試JavaScript。
AJAX架構
qooxdoo,jQuery,Mootools,Dojo,Ext JS
No1—Prototype
No2—Dojo
No3—Mootools
No4—JQuery
No5—Dwr
No6—Buffalo
No7—Yui
No8—Ext
No9—Qooxdoo
No10—Spry
誰是你心目中最優秀的Ajax架構?--CSDN專題