您的位置:首页 > 编程语言 > ASP

asp.net ajax中文乱码解决

2009-02-05 10:34 417 查看
今天自己做个项目碰到了传中文,接受时乱码,如下:

发送:

function GetJCKSettingsAdd(state)
{
    oDiv = $("loading");
    oDivContent = $("JCKSZ");
    if(state == 1)
    {
        urlstr="CZWSINOUT_Report_RPTSETAjax.aspx?command=3$"+Trim(document.getElementById('txtname1').value)+"$"+document.getElementById('AllFNselect').options[document.getElementById('AllFNselect').selectedIndex].value+"$"+document.getElementById('JCKselect1').options[document.getElementById('JCKselect1').selectedIndex].value;
    }
    else if(state == 2)
    {
        urlstr="CZWSINOUT_Report_RPTSETAjax.aspx?command=3$"+Trim(document.getElementById('txtname2').value)+"$"+document.getElementById('FNselect').options[document.getElementById('FNselect').selectedIndex].value+"$"+document.getElementById('JCKselect2').options[document.getElementById('JCKselect2').selectedIndex].value;
        //alert(urlstr);
    }
    getXML();
}
function getXML()
{
     oDiv.innerHTML = "<img src="images/ico_loading.gif" mce_src="images/ico_loading.gif" border='0' alt='' />";
     xh = new ActiveXObject("Microsoft.XMLHTTP")
     xh.onreadystatechange = getReady
     xh.open("GET",urlstr,true)
     xh.send()
}

function getReady()
{
 if(xh.readyState==4)
 {
  if(xh.status==200)
  {
    if(xh && xh.responseText) 
    {
        //alert(xh.responseText);
        var xystr=new Array(3);//报表名称记录数组
        xystr=xh.responseText.split("<!---->");
        if(xystr[1]!="undefined"&&xystr[1]!=null&&xystr[1]!="")
        {
            if(xystr[1]!="false")
            {
                //alert("|"+xystr[1]+"|noonly|");
                if(Trim(xystr[1])!="noonly")
                {
                    oDivContent.innerHTML=xystr[1];
                }
                else
                {
                    alert("新名称已经存在,请您重新编辑名称!");
                }
            }
            else
            {
                oDivContent.innerHTML = "抱歉,装载数据失败!请联系管理员!";
            }
        }
    }
  }
  else
  {
    oDivContent.innerHTML = "抱歉,装载数据失败!原因:" + xh.statusText
  }
 }
}


之后在在需要传中文的地方加上escape,解决!

function GetJCKSettingsAdd(state)
{
    oDiv = $("loading");
    oDivContent = $("JCKSZ");
    if(state == 1)
    {
        urlstr="CZWSINOUT_Report_RPTSETAjax.aspx?command=3$"+escape(Trim(document.getElementById('txtname1').value))+"$"+document.getElementById('AllFNselect').options[document.getElementById('AllFNselect').selectedIndex].value+"$"+document.getElementById('JCKselect1').options[document.getElementById('JCKselect1').selectedIndex].value;
    }
    else if(state == 2)
    {
        urlstr="CZWSINOUT_Report_RPTSETAjax.aspx?command=3$"+escape(Trim(document.getElementById('txtname2').value))+"$"+document.getElementById('FNselect').options[document.getElementById('FNselect').selectedIndex].value+"$"+document.getElementById('JCKselect2').options[document.getElementById('JCKselect2').selectedIndex].value;
        //alert(urlstr);
    }
    getXML();
}
function getXML()
{
     oDiv.innerHTML = "<img src="images/ico_loading.gif" mce_src="images/ico_loading.gif" border='0' alt='' />";
     xh = new ActiveXObject("Microsoft.XMLHTTP")
     xh.onreadystatechange = getReady
     xh.open("GET",urlstr,true)
     xh.send()
}

function getReady()
{
 if(xh.readyState==4)
 {
  if(xh.status==200)
  {
    if(xh && xh.responseText) 
    {
        //alert(xh.responseText);
        var xystr=new Array(3);//报表名称记录数组
        xystr=xh.responseText.split("<!---->");
        if(xystr[1]!="undefined"&&xystr[1]!=null&&xystr[1]!="")
        {
            if(xystr[1]!="false")
            {
                //alert("|"+xystr[1]+"|noonly|");
                if(Trim(xystr[1])!="noonly")
                {
                    oDivContent.innerHTML=xystr[1];
                }
                else
                {
                    alert("新名称已经存在,请您重新编辑名称!");
                }
            }
            else
            {
                oDivContent.innerHTML = "抱歉,装载数据失败!请联系管理员!";
            }
        }
    }
  }
  else
  {
    oDivContent.innerHTML = "抱歉,装载数据失败!原因:" + xh.statusText
  }
 }
}


相关解决办法如下:

解决AJAX传送中文会导致乱码的问题


//如果传送参数是直接赋予的,就会产生乱码!


http_request.open("POST",url,true);


http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


http_request.send("action="+strName+"&val="+val); //如果val的值为中文,则产生乱码




//解决方法很简单:使用javascript中的escape(string) 函数


http_request.open("POST",url,true);


http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


http_request.send("action="+strName+"&val="+escape(val)); //val的值为中文不会产生乱码


关于在AJAX中GET回的ResponseText中文乱码的最简解决办法

用AJAX 来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把 resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。

PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: