歡迎光臨郝學武的blog。

          AJAX中文亂碼

          Posted on 2008-06-20 16:43 陜西BOY 閱讀(4367) 評論(0)  編輯  收藏

          今天上午做項目時候因為要用到ajax異步提交數據,這里我用的是prototype.js里包的ajax對象,大家也可以自己實現XMLHttpRequest對象,vm頁面用的是gbk編碼(如果是utf-8就不會有問題了),這個url帶有兩個參數,一個是id,一個是漢字內容,浪費了不少時間!以下是說明:
          例如如下js:
          function editPollDetail(pollDetailId,pollId)
          {
               var xuanxiangneirong=document.getElementById('xuanxiangneirong'+pollDetailId);
               var url = 'createThread.do';
            var pars = 'method=editOnePollDetail&pollDetailId='+pollDetailId+'&content='+xuanxiangneirong.value+'&pollId='+pollId;
            var ajax = new Ajax.Request(url,{method:'post',parameters:pars,onComplete:showEditResult}); 
          }
          其中xuanxiangneirong是中文,開始我用了很多方法,在action中utf-8,gbk ,iso8859-1相互轉換,用了3的排列的可能全試了, 就是不行。于是上網又轉了很長時間看了很多,還是不行,最后我自己解決了這個問題,代碼如下:
          function editPollDetail(pollDetailId,pollId)
          {
               var xuanxiangneirong=document.getElementById('xuanxiangneirong'+pollDetailId);
               var url = 'createThread.do';
            var pars = 'method=editOnePollDetail&pollDetailId='+pollDetailId+'&content='+encodeURI(encodeURI(xuanxiangneirong.value))+'&pollId='+pollId; //注意這里用了兩次js的encodeURI進行轉碼。
            var ajax = new Ajax.Request(url,{method:'post',parameters:pars,onComplete:showEditResult});
          }
          在action中做如下的處理:
          public ActionForward editOnePollDetail(ActionMapping mapping, ActionForm form,
             HttpServletRequest request, HttpServletResponse response)
           {
                response.setContentType("text/plain; charset=GBK");
               String id=request.getParameter("pollDetailId");
               String pollid=request.getParameter("pollId");
               String content=request.getParameter("content");
               try
               {
                     content=URLDecoder.decode(content,"utf8");  //因為ajax默認是utf-8編碼,這里將剛才的轉碼進行解析,這樣得到就是你要傳的漢字了。
                     System.out.println(content);
               }catch(Exception e)
               {
                System.out.println("解碼出現異常");
                e.printStackTrace();
               }
            }
          大家可以做個demo,不過建議大家以后頁面都用utf-8的,這樣就能避免這些問題。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 17, comments - 65, trackbacks - 0, articles - 28

          Copyright © 陜西BOY

          主站蜘蛛池模板: 沁水县| 华池县| 新密市| 健康| 通海县| 洮南市| 中西区| 青冈县| 台前县| 伊金霍洛旗| 博罗县| 丘北县| 乌海市| 土默特左旗| 德昌县| 桐梓县| 玉龙| 旬阳县| 水城县| 铜鼓县| 依安县| 甘谷县| 若尔盖县| 万年县| 车险| 当阳市| 彩票| 岳阳市| 张家港市| 满洲里市| 宜良县| 北安市| 资阳市| 财经| 吉安市| 海南省| 绥江县| 娄烦县| 龙泉市| 福建省| 牡丹江市|