您好,欢迎访问一九零五行业门户网

JS解决url传值出现中文乱码的另类办法_javascript技巧

在开发web应用时,很多情况都需要进行前后台的数据交互,有时候我们可能需要把前台的中文数据通过url的方式传递到后台,但此时有个令人头疼的问题,因为java中网络传输使用的标准字符集是iso-8859-1,所以在后台用request.getparameter(message);获取前台传过来的中文时,得到的还是iso-8859-1字符集,中文就会出现乱码现象,好多人的解决办法是在前台传递中文之前进行decode,后台再decode一下进行转换,这样感觉很是麻烦,难道就没其他的方式解决吗?
       苦思冥想了一下:为什么用表单的方式就可以传递中文,而url的方式就不行了呢?非得用url传值的方式才能解决问题吗?这里我想到了动态表单,何不用它来解决呢,示例如下:
       假设有如下应用场景:kpi列表页面中,对每个kpi都有生成预警数据的功能,当点击列表中每个kpi生成数据的按钮时,需要把kpi的id和name传递到后台。
       前端对应的js方法:
         用url传值的写法:
复制代码 代码如下:
function createdata(indexid,indexname){
                     window.location.href=catalogaction.do?action=createindexdata&catalogid=+indexid+&catalogname=+indexname+&random=+math.random();                   }
用这种方法,由于kpi名称大多为中文,在后台接收到的值肯定为乱码。若用动态生成表单的方式就可以解决:
复制代码 代码如下:
function createdata(indexid,indexname){
               var urlstr =  catalogaction.do?action=createindexdata&pcatalogid=&catalogid=+indexid+&random=+math.random();
               var f= document.createelement('form');
               f.action = urlstr;
               f.method = 'post';
               document.body.appendchild(f);
               var temp=document.createelement('input');
               temp.type= 'hidden';
               temp.value=indexname;
               temp.name='catalogname';
               f.appendchild(temp);
               f.submit();
}
对中文字段用form的方式提交过去,不是中文的仍然用url传,这样就轻松解决了向后台传递中文出现乱码的情况。
其它类似信息

推荐信息