狗屁到灶 XMLHttpRequest
目前要玩Ajax的話當然一定要建立這樣的物件,坊間的書籍資料都很多也沒什麼好在介紹的不過建立這物件如果不是用JavaScript Framework,基本上按圖施工應該是沒問題的但是瀏覽器(browser)的種類及版本這麼多總會有一天遇到鬼的,那就是我遇到拉,而且Debug還不是普通的難其他Browser都不會發生就只發生在IE 7,又是M$的一個傑作…OOXX 又愛又恨.
根據某範例的寫法會發生以下問題:
Debug畫面顯示:…略
為什麼會發生?:
一樣要與別人不樣的M$現在又想跟其他Browser一樣,但是又不支援這樣的語法overrideMimeType('text/xml') 所以IE7 以上的版本會有這樣的問題產生.
解決方案?:
改寫建立物件產生方式
….
if (window.XMLHttpRequest){
req = new XMLHttpRequest();
if (req.overrideMimeType) {
req.overrideMimeType('text/xml'); //IE 7 以上RUN 有問題
}
…
setRequestHeader() //通用語法
SetRequestHeader() //IE語法
//通用語法
var xmldoc = source.responseXML;
var l;
var textElements = xmldoc.getElementsByTagName("result");
l = textElements.length;
for(var i = 0; i < l ; i++){
resultXML = textElements[i];
if(resultXML.childNodes.length > 0) // there is a return value
lookupResultList[i] = decodeURIComponent(resultXML.childNodes[0].data);
}
return lookupResultList;
}