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

  • 相关阅读:
    【PC Basic】CPU、核、多线程的那些事儿
    为什么要使用 do while(0)?
    DPDK CAS(compare and set)操作
    编程中Foo,Bar 到底是什么意思
    如何用Python进行ARP攻击?
    有哪些有趣的化学方程式?
    1636. 按照频率将数组升序排序
    1046. 最后一块石头的重量
    1122. 数组的相对排序
    459. 重复的子字符串
  • 原文地址:https://www.cnblogs.com/height/p/2599824.html
Copyright © 2020-2023  润新知