解决3.01版的jquery.form.js中文乱码问题的解决方法


Posted in Javascript onMarch 08, 2012

网上搜了很多方法,可能因为我用的这jquery.form.js是3.01版,也就是今年3月6日才发布的版本(汗。。。就是前天),所以普遍不太管用。至于低版本的是否管用,这个我没有去考证,但大部分还是不负责任的Copy Copy Copy 。还有一些方法是在提交前对所有的值先编码,我觉得这个太麻烦,额外增加了不少的前端代码量,也就没有采取。
好吧,那还是自己来处理吧。首先我们要找到切入点,也就是解决问题的入口。既然我们是要对JS传递的数据进行编码,那么首先肯定要从数据的传递函数开始。我调用的是ajaxSubmit函数,就是它了。打开js文件,找到这个函数,看源码,发现有一行:

var qx, a = this.formToArray(options.semantic);

formToArray的作用是把采集到的表单数据转换成对象数组,然后传递到$.get、$.post 等Ajax函数。我觉得有戏了。不过接下去的代码几百行,为节省时间,还是直入主题吧。我在上面那行设置断点,在Web页面输入中文数据,通过JS一步步调试来理解该源码。程序执行之后,几经跳转,最后在fieldValue这个函数的最后部分,终于找到了:
return $(el).val();

这样,我们只要在这里进行客户端的编码即可:
return escape($(el).val());

然后在服务器端,可以用 Server.UrlDecode() 进行解码,这样乱码就不在出现了,可以正确的接受中文字符了~~~

大家有什么好的方法或者建议也可以提出来。

Javascript 相关文章推荐
实用的Jquery选项卡TAB示例代码
Aug 28 Javascript
使用js简单实现了tree树菜单
Nov 20 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
微信js-sdk地理位置接口用法示例
Oct 12 Javascript
基于Vue实现平滑过渡的拖拽排序功能
Jun 12 Javascript
JS实现简单贪吃蛇小游戏
Oct 28 Javascript
JavaScript实现复选框全选功能
Apr 11 Javascript
详解CocosCreator项目结构机制
Apr 14 Javascript
Node.js实战 建立简单的Web服务器
Mar 08 #Javascript
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 #Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 #Javascript
node.js 一个简单的页面输出实现代码
Mar 07 #Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 #Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
Mar 07 #Javascript
拥抱模块化的JavaScript
Mar 07 #Javascript
You might like
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
Python argv用法详解
2016/01/08 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
Python版名片管理系统
2018/11/30 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
int和Integer有什么区别
2013/05/25 面试题
观后感的写法
2015/06/19 职场文书
Django migrate报错的解决方案
2021/05/20 Python
Python实战之实现简易的学生选课系统
2021/05/25 Python
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang