XmlHttpRequest IE 乱码问题
为了使用Ajax,需要定义XmlHttpRequest对象,但是不同浏览器的支持不相同,尤其是IE 和FF不同。
在项目中,需要进行前后台异步交流,同时JSP页面和后台服务器的编码设置都为UTF-8,所以以为使用XmlHttpRequest中的方法进行传参时,能不用但是乱码问题,但是IE又一次让我失望了,还是出现了乱码。代码如下
function treeAddChildClassAjax(parentid,cName,cDescribe)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var itemNum = xmlhttp.responseText;
if(itemNum.length>7)
{
alert(itemNum);
}else
{
tree.insertNewItem(tree.getSelectedItemId(),itemNum,cName,0,0,0,0,'SELECT'); fixImage(itemNum);
alert(itemNum+"添加成功!");
}
}
}
xmlhttp.open("GET","serviceDetailInfo!insertChildClass?parentid="+parentid+"&className="+cName+"&classDescribe="+cDescribe,true);
xmlhttp.send();
}
其中,主要是对于异步交互时使用了“Get”方式,而Get方法的话是将参数放到URL的后面然后传递到服务器,在FF中没问题,不用转格式就能成功获取到参数,但是在IE中死活获取不到,一直是乱码,具体怎么回事还是没解决,后面解决的方法是换一种方式和后台交互,使用“Post”方法,它默认是将参数以UTF-8的格式传递的,而且也不会放到url上去,所以在IE下顺利实现,代码如下。
function treeAddChildClassAjax(parentid,cName,cDescribe)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var itemNum = xmlhttp.responseText;
if(itemNum.length>7)
{
alert(itemNum);
}else
{
tree.insertNewItem(tree.getSelectedItemId(),itemNum,cName,0,0,0,0,'SELECT'); fixImage(itemNum);
alert(itemNum+"添加成功!");
}
}
}
var content = "parentid="+parentid+"&className="+cName+"&classDescribe="+cDescribe;
xmlhttp.open("POST","serviceDetailInfo!insertChildClass",true);
xmlhttp.setRequestHeader("Content-Length",content.length);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
//xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencode;charset=UTF-8");
xmlhttp.send(content);
}
不过还是有问题,不知道是不是weblogic的问题,用FF中提交时,处理时出现了不支持UTF-8编码的问题,使得不能使得FF顺利运行,现在只处理到这一步,看看还有没有其他解决方法。
浙公网安备 33010602011771号