1 //建立 XMLHTTPREQUEST 的執行個體
2 this.__createRequestEntity = function()
3 {
4 var req;
5 var msxml_progid = ['MSXML2.XMLHTTP.8.0', 'MSXML2.XMLHTTP.7.0', 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.2.6', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
6 try
7 {
8 req = new XMLHttpRequest();
9 }
10 catch (e)
11 {
12 for(var i = 0; i < msxml_progid.length; ++i)
13 {
14 try
15 {
16 req = new ActiveXObject(msxml_progid[i]);
17 break;
18 }
19 catch (e){}
20 }
21 }
22 return req;
23 }
24
上面是建立 XMLHTTPREQUEST 的一段 指令碼, 邏輯是建立用戶端IE的高版本的XMLHTTP,但是,在實際使用中發現,某些個別使用者的頁面顯示,中文全是亂碼『ENCODING相關的都是GB2312了』,為了這個調了N久無果。
最後,突然想起這些電腦使用另一個早期的ASP開發的 無重新整理 聯動程式很正常,於是忽然想到了XMLHTTP的版本問題,將上面的代碼改為: 1 //建立 XMLHTTPREQUEST 的執行個體
2 this.__createRequestEntity = function()
3 {
4 var req;
5 var msxml_progid = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
6 try
7 {
8 req = new XMLHttpRequest();
9 }
10 catch (e)
11 {
12 for(var i = 0; i < msxml_progid.length; ++i)
13 {
14 try
15 {
16 req = new ActiveXObject(msxml_progid[i]);
17 break;
18 }
19 catch (e){}
20 }
21 }
22 return req;
23 }
24
測試結果,一切OK, 所有PC測試通過。
唉, 不明白 microsoft 怎麼搞的, 還是我自己腦子有問題啊!