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

來源:互聯網
上載者:User

網上搜了很多方法,可能因為我用的這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() 進行解碼,這樣亂碼就不在出現了,可以正確的接受中文字元了~~~

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.