两种方式解决jquery Ajax 发送中文乱码的方法,

查过网上有很多方法,但很多都不成功,可能是因为在不环境下的区别吧!

首先,必须保证前台后台的编码统一,其次在连接数据库时的url也要指定编码。

 

第一:简单直接,修改页面

data:{ username:function(){return ""+name;} },必须以这种方式传递参数。name

是要传的参数。后台获取request.getParameter("username");这个username是function前面的username

[html]  view plain  copy
  1. function conn(name,moduleName,url,url2){  
  2.      var b;  
  3.      if(name != moduleName){  
  4.          $.ajax({  
  5.                 <span style="color:#ff0000;">type: "post", //使用get方法访问后台  
  6. </span>             dataType: "json", //返回json格式的数据  
  7.                 async: false, //同步   不写的情况下 默认为true  
  8.                <span style="color:#ff0000;"> contentType: "application/x-www-form-urlencoded; charset=utf-8",  
  9. </span>             url: "${ctx}/sys/"+url+"-"+url2+"-isExist.action", //要访问的后台地址  
  10.               <span style="color:#ff0000;">  data:{  
  11.                     name:function(){return ""+name;}  
  12.                     },  
  13. </span>             success: function(data,status){  
  14.                     if(data){//名称存在时data是false  
  15.                         b = true;  
  16.                     }else{  
  17.                         alert("名称已经存在!!!");  
  18.                         b = false;  
  19.                     }  
  20.                 }  
  21.             });  


 

第二:使用的是进行两次encodeURI..再发送!

 

[javascript]  view plain  copy
  1. function isFile(){  
  2.               
  3.             var fname = document.getElementById("upload").value;  
  4.             var type = document.getElementsByName("type");  
  5.              for(var i=0;i<type.length;i++){  
  6.                   if(type[i].checked==true){  
  7.                       type = type[i].value;  
  8.                   }  
  9.             }  
  10.             fname = fname.substring(fname.lastIndexOf("\\")+1,fname.length)  
  11.             fname = encodeURI(encodeURI(fname));   
  12.               
  13.             $j = jQuery.noConflict();//解决JQUERY冲突  
  14.         //Jquery ajax异步  
  15.         //  var url= "<%=request.getContextPath()%>/controlDocument/isName.do?fileName="+fname+"&type="+type;  
  16.         //  $j.post(url,function(data){  
  17.         //      if(data == "YES"){  
  18.         //          b="000";  
  19.         //          alert("该文档已经存在!覆盖后不可恢复,确定在覆盖吗?"+b);  
  20.         //      }  
  21.         //        
  22.         //  },"text");  
  23.           
  24.         //Jquery ajax 同步  
  25.             $j.ajax({   
  26.                 async: false,   
  27.                 type : "POST",   
  28.                 url : "<%=request.getContextPath()%>/controlDocument/isName.do?fileName="+fname+"&type="+type,   
  29.                 dataType : 'text',   
  30.                 success : function(data) {   
  31.                 if(data == "YES"){  
  32.                     if(window.confirm("该文档已经存在!覆盖后不可恢复,确定在覆盖吗?")){  
  33.                         bool = "1";  
  34.                     }else{  
  35.                         bool = "0";  
  36.                     }  
  37.                 }  
  38.                 }   
  39.                 });   
  40.               
  41.         }  
  42.         </script>  

 

以下是jsp代码

 

   

[html]  view plain  copy
  1. <div align="left">  
  2.         <fieldset class="fiel_cx">  
  3.             <legend>文件上传</legend>  
  4.             <form action="/pms/controlDocument/upload.do" method="POST"  
  5.                 enctype="multipart/form-data">  
  6.                 <font color="red">指定文件查看人员:</font> <select id="role" name="role">  
  7.                     <option value="">请选择</option>  
  8.                     <c:forEach items="${kpRoleList}" var="role">  
  9.                         <option value="${role.roleid}">${role.rolelabel}</option>  
  10.                     </c:forEach>  
  11.                 </select> 上传类型:<input type="radio" name="type" value="1">文档 <input  
  12.                     type="radio" name="type" value="2">视频 <br> <br>  
  13.                 文件上传 <input type="file" name="upload" id="upload" /> <input  
  14.                     type="submit" name="fileCaption" value="上   传"  
  15.                     onclick="return sub();" />  
  16.             </form>  
  17.         </fieldset>  
  18.     </div>  

 

 

后台接收时,要encode一下.

 

[java]  view plain  copy
  1. getResponse().setContentType("application/json;charset=utf-8");  
  2.         getResponse().setHeader("caChe-Control""no-cache");  
  3.         getResponse().setCharacterEncoding("UTF-8");  
  4.         getRequest().setCharacterEncoding("UTF-8");  
  5.         String fileName = URLDecoder.decode(  
  6.                 getRequest().getParameter("fileName"), "UTF-8");  

你可能感兴趣的:(JavaScript,jquery,Ajax,中文乱码,解决)