资源描述
按一下以編輯母片標題樣式,-,*,按一下以編輯母片,第二層,第三層,第四層,第五層,第,11,章,XML,資料的傳遞,XmlHttpRequest,物件,簡介,XmlHttpRequest,-,什麼是,XmlHttpRequest,MSXML,提供的,HttpRequest,物件可以協助使用者用很簡單的方式,建立,HTTP,連結,並以,XML,做為傳遞資料的格式。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,readyState,(唯讀)顯示目前,HTTP,連結狀態的長整數,下表將說明各數值代表的意義。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,responseBody,(唯讀)以無正負號的位元組陣列形式,傳回伺服器的回應。,responseStream,(唯讀)以,Istream,物件的形式,傳回伺服器的回應。,responseText,(唯讀)以字串的形式,傳回伺服器的回應。,responseXML,(唯讀)以,XML DOM,物件的形式,傳回伺服器的回應。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,status,(唯讀)取得,HTTP,連結的回應狀態碼,傳回,200,代表伺服器已正常回應。,statusText,(唯讀)取得,HTTP,連結的回應狀態文字,當伺服器正常回應時,將傳回,OK,。,onreadystatechange,(可讀寫)設定當,readyState,屬性改變時,回應此事件的程序。此屬性專為,IE,的,Script,語言設計,無法使用於其他語言。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,status,(唯讀)取得,HTTP,連結的回應狀態碼,傳回,200,代表伺服器已正常回應。,statusText,(唯讀)取得,HTTP,連結的回應狀態文字,當伺服器正常回應時,將傳回,OK,。,onreadystatechange,(可讀寫)設定當,readyState,屬性改變時,回應此事件的程序。此屬性專為,IE,的,Script,語言設計,無法使用於其他語言。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,以下是,HttpRequest,物件的方法介紹。,abort(),說明:取消目前的,HTTP,請求。呼叫後,,readyState,屬性將傳回,0,(,UNINITIALIZED,)。若欲再發出請求,必須再次呼叫,send(),方法。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,以下是,HttpRequest,物件的方法介紹。,abort(),說明:取消目前的,HTTP,請求。呼叫後,,readyState,屬性將傳回,0,(,UNINITIALIZED,)。若欲再發出請求,必須再次呼叫,send(),方法。,getAllResponseHeaders(),說明:取得,HTTP,請求的所有標頭內容。,簡介,XmlHttpRequest,-HttpRequest,物件的屬性與方法,getResponseHeader(,標頭名稱,),說明:取得,HTTP,請求特定標頭的內容。,open(,方法,位址,是否同步,使用者名稱,使用者密碼,),說明:字串內容為,HTTP,請求的所有標頭內容。,send(,請求訊息,),說明:送出,HTTP,連結請求。回應時,將預設使用,UTF-8,為編碼格式。,setRequestHeader(,標頭名稱,值,),說明:設定,HTTP,連結請求的自訂標頭。,簡介,XmlHttpRequest,-HTTP,連結的請求與回應,運用,XMLHttp,物件與伺服端建立,HTTP,連結,並取得回應的過程,如下圖所示。,簡介,XmlHttpRequest,-HTTP,連結的請求與回應,欲開啟,HTTP,連結時,需呼叫,XMLHttp,物件的,open(),方法,語法如下:,XMLHttp,物件,.open(,方法,位址,是否同步,使用者名稱,使用者密碼,),沒有回傳值。,簡介,XmlHttpRequest,-HTTP,連結的請求與回應,欲開啟,HTTP,連結時,需呼叫,XMLHttp,物件的,open(),方法,語法如下:,XMLHttp,物件,.open(,方法,位址,是否同步,使用者名稱,使用者密碼,),沒有回傳值。,以下敘述將運用,xmlHttp,物件,以,GET,方法開啟與,.tw,間的,HTTP,連結,並以不同步方式連結。,簡介,XmlHttpRequest,-HTTP,連結的請求與回應,開啟後,呼叫,send(),方法,將可送出,Http,請求,語法如下:,XMLHttp,物件,.send(,請求訊息,),沒有回傳值。,以下敘述將向,xmlHttp,物件所開啟的連結,送出,HTTP,請求,但並不送出資料。,簡介,XmlHttpRequest,-HTTP,連結的請求與回應,開啟後,呼叫,send(),方法,將可送出,Http,請求,語法如下:,XMLHttp,物件,.send(,請求訊息,),沒有回傳值。,以下敘述將向,xmlHttp,物件所開啟的連結,送出,HTTP,請求,但並不送出資料。,送出請求後,可透過,XMLHttp,物件的,status,屬性取得伺服器回應的狀態碼,回應的狀態訊息,則可透過,statusText,屬性取得。,簡介,XmlHttpRequest,-,標頭的取得與自訂,欲取得回應的,HTTP,訊息之標頭,則必須呼叫,getAllResponseHeaders(),方法與,getResponseHeader(),方法。,呼叫,getAllResponseHeaders(),方法可取得回應之,HTTP,訊息的所有標頭內容,語法說明如下:,XMLHttp,物件,.getAllResponseHeaders(),回傳值為所有標頭內容的字串。,欲取得特定標頭時,則可呼叫,getResponseHeader(),方法語法說明如下:,XMLHttp,物件,.getResponseHeader(,標頭名稱,),回傳值為欲取得之特定標頭內容的字串。,簡介,XmlHttpRequest,-,標頭的取得與自訂,除了,HTTP,訊息的標準標頭外,,XMLHttp,物件還提供了,setRequestHeader(),方法,讓我們可以在,HTTP,訊息內,加入自訂標頭,以提供伺服器更多有關此,HTTP,請求的資訊。,在下一章有關,SOAP,與遠端程序呼叫的應用上,您將可看到這樣的應用。請注意!執行自訂標頭動作的時機,必須在呼叫,XMLHttp,物件開啟,HTTP,連結後,送出,HTTP,請求前。,以下是呼叫,setRequestHeader(),方法的語法:,XMLHttp,物件,.setRequestHeader(,標頭名稱,值,),此方法無回傳值。,簡介,XmlHttpRequest,-,標頭的取得與自訂,除了,HTTP,訊息的標準標頭外,,XMLHttp,物件還提供了,setRequestHeader(),方法,讓我們可以在,HTTP,訊息內,加入自訂標頭,以提供伺服器更多有關此,HTTP,請求的資訊。,執行自訂標頭動作的時機,必須在呼叫,XMLHttp,物件開啟,HTTP,連結後,送出,HTTP,請求前。,以下是呼叫,setRequestHeader(),方法的語法:,XMLHttp,物件,.setRequestHeader(,標頭名稱,值,),此方法無回傳值。,以下敘述將自訂名稱為,myHeader,的標頭,其值為,Hello World!,。,簡介,XmlHttpRequest,-,標頭的取得與自訂,若在伺服端欲取得自訂標頭,必須使用,ASP,的,Request,物件的,ServerVariables(),方法,語法如下:,Request.ServerVariables(,自訂標頭名稱,),回傳值為取得之自訂標頭的值。,以下敘述將透過,Request,物件的,ServerVariables(),方法,取得客戶端傳送過來,名稱為,myHeader,的自訂標頭。,以,XML,交換資料,-,資料交換過程,資料交換過程,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,客戶端可以透過,responseXML,屬性取得儲存回傳,XML,文件的,DOM,物件,從,responseText,屬性取得伺服端回傳資料的字串內容,就沒有什麼需要注意的地方。,伺服端就不一樣,您要留意回應字串的格式(回應的是字串不是物件),是否符合,XML,格式的要求,若不符合,則將無法透過,responseXML,屬性,取得儲存回傳,XML,資料的,DOM,物件(記得取得的是物件,不是字串)。,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,當希望客戶端可以透過,responseXML,屬性,取得,DOM,物件時,在,ASP,網頁內,必須注意以下兩點:,一、指定,Response,物件的,ContentType,屬性為,text/xml,二、輸出指定編碼格式的文件宣告,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,當希望客戶端可以透過,responseXML,屬性,取得,DOM,物件時,在,ASP,網頁內,必須注意以下兩點:,一、指定,Response,物件的,ContentType,屬性為,text/xml,二、輸出指定編碼格式的文件宣告,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,從,DOM,物件取得,XML,文件的內容時,要避免使用以下這樣的敘述。,而應該改用以下這個敘述,確保不會輸出文件宣告。,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,除錯的獨家秘方,Response,物件的,Expires,屬性,用於控制客戶端瀏覽器暫存網頁資料的時間,設為,0,則瀏覽器不暫存資料,可避免程式除錯時,因客戶端暫存了之前傳回的資料,導致無法正確顯示回應訊息的問題。,Response,物件的,charSet,屬性,用於控制回傳訊息使用的字元集,設定為,Big5,後(還記得嗎?,XMLHttp,物件的預設編碼為,UTF-8,),由,XMLHttp,物件,responseText,屬性取得的回應字串,才不會是一堆亂碼。而,ASP,網頁執行時,發生的錯誤訊息,也才能正確顯示,以提供您除錯的參考。,為了除錯的方便,請再,ASP,網頁內加上以下兩行敘述。,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,直接取得伺服端的,XML,文件您也可以運用,XMLHttp,物件的,open(),方法,開啟伺服端,XML,文件的,URL,位址,直接取得,XML,資料。,以,XML,交換資料,-,以,GET,方法取得伺服端回應的,XML,文件,直接取得伺服端的,XML,文件您也可以運用,XMLHttp,物件的,open(),方法,開啟伺服端,XML,文件的,URL,位址,直接取得,XML,資料。,以,XML,交換資料,-,以,POST,方法將,XML,文件送至伺服端,關於如何從客戶端傳送,XML,資料至伺服端,其重點主要在於:,如何從客戶端送出,XML,資料,伺服端如何取得資料,客戶端欲送出,XML,資料時,可以使用,send(),方法,載入欲傳遞,XML,資料的,DOM,物件,在發出,HTTP,請求時,送至伺服端。,以,XML,交換資料,-,以,POST,方法將,XML,文件送至伺服端,以下敘述便以,send(),方法,將儲存欲傳遞,XML,資料的,DOM,物件(名為,objDOM,),送至伺服端。,而傳遞至伺服端的,XML DOM,物件,將可透過,Request,物件取得。方法為呼叫,DOM,物件的,load(),方法,從,Request,物件載入,DOM,物件。,
展开阅读全文