XMLHttpRequest對象提供了兩個可以用來訪問伺服器響應的屬性。第一個屬性respo-
nseText將響應提供為一個串,第二個屬性responseXML將響應提供為一個XML對象。一些簡單的用例就很適合按簡單文本來擷取響應,如將響應顯示在警告框中,或者響應只是指示成功還是失敗的詞。
第2章中的例子就使用了responseText屬性來訪問伺服器響應,並將響應顯示在警告框中。
3.1.1 使用innerHTML 屬性建立動態內容
如果將伺服器響應作為簡單文本來訪問,則靈活性欠佳。簡單文本沒有結構,很難用JavaScript進行邏輯性的表述,而且要想動態地產生頁面內容也很困難。
如果結合使用HTML元素的innerHTML 屬性,responseText屬性就會變得非常有用。innerHTML 屬性是一個非標準的屬性,最早在IE中實現,後來也為其他許多流行的瀏覽器所採用。這是一個簡單的串,表示一組開始標記和結束標記之間的內容。
通過結合使用responseText和inner-
HTML,伺服器就能“生產”或產生HTML內容,由瀏覽器使用innerHTML 屬性來“消費”或處理。下面的例子展示了一個搜尋功能,這是使用XMLHttpRequest對象、其responseText屬性和HTML元素的innerHTML 屬性實現的。點擊search(搜尋)按鈕將在伺服器上啟動“搜尋”,伺服器將產生一個結果表作為響應。瀏覽器處理響應時將div元素的innerHTML 屬性設定為XMLHttpRequest對象的response-
Text屬性值。圖3-1顯示了點擊search按鈕而且在視窗內容中增加了結果表之後的瀏覽器視窗。
第2章的例子只是將伺服器響應顯示在警告框中,這個例子的代碼與它很相似。具體步驟如下:
1. 點擊search按鈕,調用startRequest函數,它先調用createXMLHttpRequest函數來初始化XMLHttpRequest對象的一個新執行個體;
2. startRequest函數將回呼函數設定為handleStateChange函數;
3. startRequest函數使用open()方法來佈建要求方法(GET)及請求目標,並且設定為非同步地完成請求;
4. 使用XMLHttpRequest對象的send()方法發送請求;