HtttpRequest對象是Ajax的核心,它有許多的屬性、方法和事件以便于腳本處理和控制HTTP的請求與相應,下面蘇州網站制作主要講述一下open() 和send()方法。
XMLHttpRequets對象是通過調用open(method,uri,async,username,password)方法來進行初始化工作的。調用該方法得到一個可以用來進行發行(send()方法)的對象。Open()方法有5個參數。
(1)method參數是必須提供的,用于指定用來發送請求的HTTP方法(GET,POST,PUT,DELETE或HEAD)。按照HTTP規范,該參數要大寫。
(2)uri參數用于指定XMLHttpRequest對象把請求發送到的服務器響應的URL,該地址會被自動解析位絕對地址。
(3)async參數用于指定是否請求是異步的,其默認值是TRUE。如果需要發送一個同步請求,需要把該參數設置為false。
(4)如果需要服務器驗證訪問用戶的情況,那么可以設置username以及password這兩個參數。
調用opend()方法后,就可以通過調用send()方法按照open()方法設定的參數將請求進行發送。當open()方法中async參數為true時,在send()方法調用后立即返回,否則將會終端直到請求返回。需要注意的是,send()方法必須在readyState屬性值為1時,即調用open()方法以后才可能調用。在調用send()方法以后到接受到響應信息之前,readyState屬性的值將被設置為2;一旦接收到響應信息,readyState屬性值將會被設為3;知道響應接收完成,readyState屬性的值才會被設為4。
Send()方法使用一個可選的參數,該參數可以包含可變類型的數據。用戶可以使用它并通過POST方法把數據發送到服務器。另外,可以顯式地使用null參數調用send()方法,這與不同參數調用該方法一樣。對于大多數其他的參數類型,再調用send()方法之前,應該使用setRequestHeader()方法先設置Content-Type頭部。如果send(data)方法中的data參數的類型為DOMString,那么,數據將被編譯為UTF-8。如果數據是Document類型,那么將使用由data.xmlEncoding指定的編碼串行化該數據。setRequestHeader()方法是用來設置請求的頭部信息。當readyState屬性值為1時,可以再調用open()方法后調用這個方法;否則將得到一個異常。SetRequestHeader(header,value)方法包含兩個參數:前一個是header鍵名稱,后一個是鍵值。getRequestHeader()方法用于檢索響應的頭部值,僅當readState屬性值是3或4(即在響應頭部可用后)時,才可以調用這個方法;否從,該方法返回一個空字符串。此處還可以通過getAllRequestHeaders()方法獲取所有的HttpRequest的頭部信息。