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

2

3



4

5

6

7



8

9

10

11



12

13



14

15



16

17

18

19



20

21

22

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

2

3



4

5

6

7



8

9

10

11



12

13



14

15



16

17

18

19



20

21

22

23

24

测试结果,一切OK, 所有PC测试通过。
唉, 不明白 microsoft 怎么搞的, 还是我自己脑子有问题啊!
