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

本文介绍了一种解决XMLHttpRequest请求导致的中文乱码问题的方法。通过对XMLHttpRequest实例创建过程的调整,确保了不同版本浏览器的兼容性,并解决了特定环境下出现的中文乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 None.gif      // 创建 XMLHTTPREQUEST 的实例
 2 None.gif      this .__createRequestEntity  =   function ()
 3 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 4InBlock.gif        var req;
 5InBlock.gif        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'];
 6InBlock.gif        try
 7ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 8InBlock.gif            req = new XMLHttpRequest();
 9ExpandedSubBlockEnd.gif        }

10InBlock.gif        catch (e)
11ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
12InBlock.gif            for(var i = 0; i < msxml_progid.length; ++i)
13ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
14InBlock.gif                try
15ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
16InBlock.gif                    req = new ActiveXObject(msxml_progid[i]);
17InBlock.gif                    break;
18ExpandedSubBlockEnd.gif                }

19ExpandedSubBlockStart.gifContractedSubBlock.gif                catch (e)dot.gif{}
20ExpandedSubBlockEnd.gif            }

21ExpandedSubBlockEnd.gif        }

22InBlock.gif        return req;
23ExpandedBlockEnd.gif    }

24 None.gif

上面是创建 XMLHTTPREQUEST 的一段 脚本, 逻辑是创建客户端IE的高版本的XMLHTTP,但是,在实际使用中发现,某些个别用户的页面显示,中文全是乱码『 ENCODING相关的都是GB2312了』,为了这个调了N久无果。
最后,突然想起这些电脑使用另一个早期的ASP开发的 无刷新 联动程序很正常,于是忽然想到了XMLHTTP的版本问题,将上面的代码改为:
 1 None.gif      // 创建 XMLHTTPREQUEST 的实例
 2 None.gif      this .__createRequestEntity  =   function ()
 3 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 4InBlock.gif        var req;
 5InBlock.gif        var msxml_progid = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
 6InBlock.gif        try
 7ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 8InBlock.gif            req = new XMLHttpRequest();
 9ExpandedSubBlockEnd.gif        }

10InBlock.gif        catch (e)
11ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
12InBlock.gif            for(var i = 0; i < msxml_progid.length; ++i)
13ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
14InBlock.gif                try
15ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
16InBlock.gif                    req = new ActiveXObject(msxml_progid[i]);
17InBlock.gif                    break;
18ExpandedSubBlockEnd.gif                }

19ExpandedSubBlockStart.gifContractedSubBlock.gif                catch (e)dot.gif{}
20ExpandedSubBlockEnd.gif            }

21ExpandedSubBlockEnd.gif        }

22InBlock.gif        return req;
23ExpandedBlockEnd.gif    }

24 None.gif

测试结果,一切OK, 所有PC测试通过。

唉, 不明白 microsoft 怎么搞的, 还是我自己脑子有问题啊! 22.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值