Ajax url中文參數(shù)問題

今天學(xué)習(xí)了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="已經(jīng)存在";
                } 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對象向后臺傳送數(shù)據(jù),參數(shù)加在url中。然而問題出現(xiàn)了,我的整個java web項目全部統(tǒng)一編碼為UTF-8,但是中文參數(shù)在后臺還是出現(xiàn)亂碼,經(jīng)過網(wǎng)上查詢后,有一種方法,即對中文進行編碼,使得傳到后臺的參數(shù)沒有中文,然后再后臺進行解碼。
如上所示,在JS代碼中需要對中文參數(shù)進行兩次encodeURL(),那么為什么需要兩次encodeURL()呢?
因為第一次編碼,會將中文編成‘%xy’的格式,在瀏覽器地址欄里,瀏覽器認(rèn)為%是個轉(zhuǎn)義字符,瀏覽器會把%與%之間的編碼,兩位兩位取出后進行解碼,然后再傳遞給處理頁面,如果沒有%,xy是不能解碼為原來的中文,所以必須再次編碼,將‘%’編碼為‘%25’,解碼的時候‘25’就解碼為‘%’,從來還原中文。
以上是客戶端的編碼,需要在服務(wù)器端進行解碼。

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

這樣就沒有問題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容