使用AJAX时,并不总是使用的 XMLHTTP 的版本越高越好哎

 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 怎么搞的, 还是我自己脑子有问题啊!
posted @ 2007-02-23 18:54  三角猫  阅读(1630)  评论(11编辑  收藏  举报