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顺利运行,现在只处理到这一步,看看还有没有其他解决方法。

原文地址:https://www.cnblogs.com/height/p/2599824.html