美文网首页
Ajax url中文参数问题

Ajax url中文参数问题

作者: 会飞的猪姥姥 | 来源:发表于2016-08-06 15:03 被阅读0次

    今天学习了Ajax,利用Ajax无刷新检查用户名是否存在,代码如下:

    <script type="text/javascript">
        function checkCtype() {
            var ctype = document.getElementById("ctype").value;
            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)
                {
                    if (xmlhttp.responseText == "true") {
                        document.getElementById("repeat").innerHTML="已经存在";
                    } else {
                        document.getElementById("repeat").innerHTML="可以添加";
                    }
                }
              }
            var url = "/HelloWeb/categoryServlet?status=checkCtype&ctype=" + ctype;
            url = encodeURI(url); 
                url=encodeURI(url); 
            xmlhttp.open("POST",url,true);
            xmlhttp.send();
        }   
    

    利用XMLHttpRequest对象向后台传送数据,参数加在url中。然而问题出现了,我的整个java web项目全部统一编码为UTF-8,但是中文参数在后台还是出现乱码,经过网上查询后,有一种方法,即对中文进行编码,使得传到后台的参数没有中文,然后再后台进行解码。
    如上所示,在JS代码中需要对中文参数进行两次encodeURL(),那么为什么需要两次encodeURL()呢?
    因为第一次编码,会将中文编成‘%xy’的格式,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,如果没有%,xy是不能解码为原来的中文,所以必须再次编码,将‘%’编码为‘%25’,解码的时候‘25’就解码为‘%’,从来还原中文。
    以上是客户端的编码,需要在服务器端进行解码。

    String ctype = URLDecoder.decode(request.getParameter("ctype"),"utf-8");
    

    这样就没有问题了。

    相关文章

      网友评论

          本文标题:Ajax url中文参数问题

          本文链接:https://www.haomeiwen.com/subject/dsvksttx.html