解決3.01版的jquery.form.js中文亂碼問題的解決方法
更新時間:2012年03月08日 23:12:10 作者:
最近用到了jquery的一個fom插件,是一個全面支持表單的jQuery插件。昨天在用ajaxSubmit進行Form Post提交的時候,發(fā)現(xiàn)服務器端取回的中文數(shù)據(jù)居然是亂碼。這個可能是因為jquery是utf-8,不支持gb2312
網(wǎng)上搜了很多方法,可能因為我用的這jquery.form.js是3.01版,也就是今年3月6日才發(fā)布的版本(汗。。。就是前天),所以普遍不太管用。至于低版本的是否管用,這個我沒有去考證,但大部分還是不負責任的Copy Copy Copy 。還有一些方法是在提交前對所有的值先編碼,我覺得這個太麻煩,額外增加了不少的前端代碼量,也就沒有采取。
好吧,那還是自己來處理吧。首先我們要找到切入點,也就是解決問題的入口。既然我們是要對JS傳遞的數(shù)據(jù)進行編碼,那么首先肯定要從數(shù)據(jù)的傳遞函數(shù)開始。我調(diào)用的是ajaxSubmit函數(shù),就是它了。打開js文件,找到這個函數(shù),看源碼,發(fā)現(xiàn)有一行:
var qx, a = this.formToArray(options.semantic);
formToArray的作用是把采集到的表單數(shù)據(jù)轉(zhuǎn)換成對象數(shù)組,然后傳遞到$.get、$.post 等Ajax函數(shù)。我覺得有戲了。不過接下去的代碼幾百行,為節(jié)省時間,還是直入主題吧。我在上面那行設(shè)置斷點,在Web頁面輸入中文數(shù)據(jù),通過JS一步步調(diào)試來理解該源碼。程序執(zhí)行之后,幾經(jīng)跳轉(zhuǎn),最后在fieldValue這個函數(shù)的最后部分,終于找到了:
return $(el).val();
這樣,我們只要在這里進行客戶端的編碼即可:
return escape($(el).val());
然后在服務器端,可以用 Server.UrlDecode() 進行解碼,這樣亂碼就不在出現(xiàn)了,可以正確的接受中文字符了~~~
大家有什么好的方法或者建議也可以提出來。
好吧,那還是自己來處理吧。首先我們要找到切入點,也就是解決問題的入口。既然我們是要對JS傳遞的數(shù)據(jù)進行編碼,那么首先肯定要從數(shù)據(jù)的傳遞函數(shù)開始。我調(diào)用的是ajaxSubmit函數(shù),就是它了。打開js文件,找到這個函數(shù),看源碼,發(fā)現(xiàn)有一行:
復制代碼 代碼如下:
var qx, a = this.formToArray(options.semantic);
formToArray的作用是把采集到的表單數(shù)據(jù)轉(zhuǎn)換成對象數(shù)組,然后傳遞到$.get、$.post 等Ajax函數(shù)。我覺得有戲了。不過接下去的代碼幾百行,為節(jié)省時間,還是直入主題吧。我在上面那行設(shè)置斷點,在Web頁面輸入中文數(shù)據(jù),通過JS一步步調(diào)試來理解該源碼。程序執(zhí)行之后,幾經(jīng)跳轉(zhuǎn),最后在fieldValue這個函數(shù)的最后部分,終于找到了:
復制代碼 代碼如下:
return $(el).val();
這樣,我們只要在這里進行客戶端的編碼即可:
復制代碼 代碼如下:
return escape($(el).val());
然后在服務器端,可以用 Server.UrlDecode() 進行解碼,這樣亂碼就不在出現(xiàn)了,可以正確的接受中文字符了~~~
大家有什么好的方法或者建議也可以提出來。
您可能感興趣的文章:
- jquery.form.js框架實現(xiàn)文件上傳功能案例解析(springmvc)
- 使用jQuery.form.js/springmvc框架實現(xiàn)文件上傳功能
- Struts2+jquery.form.js實現(xiàn)圖片與文件上傳的方法
- 使用jquery.form.js實現(xiàn)圖片上傳的方法
- jQuery插件之jQuery.Form.js用法實例分析(附demo示例源碼)
- 基于jQuery通過jQuery.form.js插件實現(xiàn)異步上傳
- jquery.form.js實現(xiàn)將form提交轉(zhuǎn)為ajax方式提交的方法
- jquery.form.js用法之清空form的方法
- jQuery.form.js的使用詳解
相關(guān)文章
jquery 實現(xiàn)input輸入什么div圖層顯示什么
這篇文章主要介紹jquery實現(xiàn)input輸入什么div圖層顯示什么的具體過程,需要的朋友可以參考下2014-06-06
省市區(qū)三級聯(lián)動jquery實現(xiàn)代碼
這篇文章主要為大家詳細紹了省市區(qū)三級聯(lián)動jquery實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
基于jquery的文本框與autocomplete結(jié)合使用(asp.net+json)
基于jquery的文本框與autocomplete結(jié)合使用示例代碼,需要的朋友可以參考下2012-05-05
javascript基于jQuery的表格懸停變色/恢復,表格點擊變色/恢復,點擊行選Checkbox
jQuery的表格懸停變色 恢復,表格點擊變色/恢復,點擊行選Checkbox2008-08-08
jquery把int類型轉(zhuǎn)換成字符串類型的方法
下面小編就為大家?guī)硪黄猨query把int類型轉(zhuǎn)換成字符串類型的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10

