IE下 JS传参出现中文乱码解决

来源:互联网 发布:听旋律识音谱的软件 编辑:程序博客网 时间:2024/05/22 16:53

问题:

在IE浏览器下选择要查询的商品类别之后点击查询查不到相关记录,但是谷歌火狐可以正常使用的。
经过调试在Controller里发现传过去的参数已经变成乱码了,所以后台查不到记录。
这里写图片描述

分析:

controller里面的参数是从前台js传过去的,所以问题肯定出在js和controller,以为浏览器的原因,这里需要先编码再解码保证参数的正确传递。

解决:

1.看配置文件下是否是UTF-8编码,如果不是,在Connector标签中加入URIEncoding= “UTF-8”。
2.使用js的escape()编码,与之对应的是unescape()解码,但是ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。

实践:

//在JS中编码 data: "&categroyName=" + escape($("#cmb_itemcategory").val()),-------------------------------//在Controller中解码vmCategoryrUser.CategoryName = Server.UrlDecode(categroyName);

效果图:

已传入正常参数。
这里写图片描述

补充(三种编码):

js中编码的方式大致有escape(),encodeURI() , encodeURI(Component) 三种。
1. escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
2. encodeURI() 函数可把字符串作为 URI 进行编码。
3. encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
本次选中escape()编码的原因是这里没有涉及到URL编码只涉及到参数字符串的编码。这三种编码的具体解释和实例请点击 这里。