最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決3.01版的jquery.form.js中文亂碼問題的解決方法

 更新時間:2012年03月08日 23:12:10   作者:  
最近用到了jquery的一個fom插件,是一個全面支持表單的jQuery插件。昨天在用ajaxSubmit進(jìn)行Form Post提交的時候,發(fā)現(xiàn)服務(wù)器端取回的中文數(shù)據(jù)居然是亂碼。這個可能是因?yàn)閖query是utf-8,不支持gb2312
網(wǎng)上搜了很多方法,可能因?yàn)槲矣玫倪@jquery.form.js是3.01版,也就是今年3月6日才發(fā)布的版本(汗。。。就是前天),所以普遍不太管用。至于低版本的是否管用,這個我沒有去考證,但大部分還是不負(fù)責(zé)任的Copy Copy Copy 。還有一些方法是在提交前對所有的值先編碼,我覺得這個太麻煩,額外增加了不少的前端代碼量,也就沒有采取。
好吧,那還是自己來處理吧。首先我們要找到切入點(diǎn),也就是解決問題的入口。既然我們是要對JS傳遞的數(shù)據(jù)進(jìn)行編碼,那么首先肯定要從數(shù)據(jù)的傳遞函數(shù)開始。我調(diào)用的是ajaxSubmit函數(shù),就是它了。打開js文件,找到這個函數(shù),看源碼,發(fā)現(xiàn)有一行:

復(fù)制代碼 代碼如下:

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

formToArray的作用是把采集到的表單數(shù)據(jù)轉(zhuǎn)換成對象數(shù)組,然后傳遞到$.get、$.post 等Ajax函數(shù)。我覺得有戲了。不過接下去的代碼幾百行,為節(jié)省時間,還是直入主題吧。我在上面那行設(shè)置斷點(diǎn),在Web頁面輸入中文數(shù)據(jù),通過JS一步步調(diào)試來理解該源碼。程序執(zhí)行之后,幾經(jīng)跳轉(zhuǎn),最后在fieldValue這個函數(shù)的最后部分,終于找到了:

復(fù)制代碼 代碼如下:

return $(el).val();

這樣,我們只要在這里進(jìn)行客戶端的編碼即可:
復(fù)制代碼 代碼如下:

return escape($(el).val());

然后在服務(wù)器端,可以用 Server.UrlDecode() 進(jìn)行解碼,這樣亂碼就不在出現(xiàn)了,可以正確的接受中文字符了~~~

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

相關(guān)文章

最新評論

肇庆市| 洞口县| 荣昌县| 伊金霍洛旗| 会东县| 西畴县| 连平县| 阿瓦提县| 天水市| 阳春市| 关岭| 无棣县| 洛阳市| 昌都县| 无极县| 光泽县| 上林县| 东平县| 赣州市| 潜山县| 佛学| 镇巴县| 青神县| 遂溪县| 杭州市| 天柱县| 珠海市| 固始县| 阳曲县| 永宁县| 陕西省| 修武县| 华亭县| 临湘市| 城固县| 漳平市| 洪雅县| 水富县| 巩义市| 合山市| 油尖旺区|