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

 在开发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=#>                   }


用这种方法,由于KPI名称大多为中文,在后台接收到的值肯定为乱码。

若用动态生成表单的方式就可以解决:

复制代码 代码如下:

function createData(indexId,indexName){
               var urlStr =  "catalogAction.do?action=CreateIndexData&PcatalogId=<c:out value='${catalogId}'/>&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传,这样就轻松解决了向后台传递中文出现乱码的情况。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
作为WEB前端开发者,jQuery和CSS3肯定用得也比较多,那么下面就分享一些由jQuery和CSS3制作成的特效,希望大家会喜欢。 1、基于jQuery和CSS3的圆盘抽奖 这个小程序可以让你在网站上轻松的添加一个抽奖应用,应用是基于jQuery和CSS3开发的,圆盘抽奖很好玩的哦,你抽中了什么? 在线演示 / 源码下载 2、纯CSS3实现的点击发光按钮特效 这款按钮时基于纯CSS3实现的,当用户点击按钮的瞬间,按钮四周会发出淡淡的白光效果,是一款非常有特色的按钮。 在线演示 / 源码下载 3、jQu
1.事件流的区别 IE采用冒泡型事件 Netscape使用捕获型事件 DOM使用先捕获后冒泡型事件 示例: 复制代码 代码如下: body div button点击这里/button /div /body 冒泡型事件模型: button-div-body (IE事件流) 捕获型事件模型: body-div-button (Netscape事件流) DOM事件模型: body-div-button-button-div-body (先捕获后冒泡) 2.事件侦听函数的区别 IE使用: [Object].att
复制代码 代码如下: var obj = new Object(); obj.triggerOnce = function(fn) { //控制让函数只触发一次 return function() { try { fn.apply(this, arguments); } catch (e) { var txt = "There was an error on this page.\n\n"; txt += "Error message: " + e.message + "\n\n"; txt += "Er
将代码中res_id_encode参数的值,如5830549229E3096684665改成自己猎聘账户相关的ID即可。如何查看自己的ID,只要打开F12,点一下猎聘网个人中心的刷新简历,在network里面就能看到类似代码中的get请求了,把该请求的参数复制出来即可,替换res_id_encode的值后,将代码复制到console里运行。 function refreshResume() { $.post('/resume/refreshresume/','res_id_encode=583054922
第一个问题是对于按键事件来说根本就没有标准,按照规范说的:包含键盘等输入设备的事件模型会在以后的DOM规范中作出解释。 正如我们了解到的,浏览器在最开始设计的时候并没有一个标准,大家都像做实验似的,最后的成品虽然是有用的,但是肯定造成了兼容性的问题。按键问题也不例外:这里有两个属性能检测到用户按下了什么键,虽然有足够的理由为什么需要两个属性,但是依然并不是所有的浏览器都支持。 另外,在keypress与keydown和keyup之间还有一些很重要的区别。 最后就是windows和mac的区别了,在mac上要
先看界面代码: 复制代码 代码如下: form id="form1" runat="server" div align="center" fieldset table border="0" cellpadding="3" cellspacing="3" tr td 请选择汽车类型: /td /tr tr td asp:DropDownList ID="dllCar" runat="server" ToolTip="至少选择一种车!" CssClass="required" asp:ListItem Valu

Bootstrap基础学习 - 2015-07-15 18:07:22

Bootstrap是一个基于栅格结构的前端结构框架(当然也有JS,JQuery),它的优点是内容框架能够迅速搭建起来,基于媒介查询可以使搭建的页面迅速的适应不同的用户端,无论是手机,平板,还是PC,基本上都能自适应,当然新版本已经开始不支持IE6了,对IE8的支持也很有限,毕竟IE8对HTML5的支持不太好,(说实话,我自己也不喜欢IE6~8,对于我这种初级选手来说,兼容性有时候真费劲,不仅项目上要用,连面试也要用,有没有搞错嘛,遇到了,上网查一下不就行了。发个牢骚,该会的还是得会啊!!!) 闲言碎语不多
javascript Date.getDay()方法按照本地时间返回一周中的一天为所述指定的日期。通过getDay返回的值是对应于星期几的整数:0代表星期日,1代表星期一,2表示星期二,依此类推。 语法 Date.getDay() 下面是参数的详细信息: NA 返回值: 按照本地时间返回星期几为指定日期。 例子: htmlheadtitleJavaScript getDay Method/title/headbodyscript type="text/javascript" var dt = new Da
许多制作网页的朋友常常制作公告板、信息窗,也经常为了实现整版页面和图像的滚屏显示而烦恼,不用着急,这里有一个简单的方法来实现滚屏显示。我们没有采用Java的.class程序来实现,也不是动态DHTML语言,只是充分地利用了JavaScript脚本语言的一些函数,写一些简短的JavaScript脚本语言就可实现这一功能。 原代码如下: html head script language="Javascript" !--//防止错误显示 locate=0; function my_scroller() { i

JS 树形递归实例代码 - 2015-07-15 18:07:19

复制代码 代码如下: var l=json.length; var arr = []; for(var i = 0; i l; i++){ (function(){ var jsonArray =arguments[0]; for(var k in jsonArray){ if(k.indexOf('children') != -1 jsonArray[k] != null){ arguments.callee(jsonArray[k]); } else{ if(k == 'name' || k == '