GBK編碼下jQuery Ajax中文亂碼終極暴力解決方案

來源:互聯網
上載者:User

哎,還是老話題,一直纏繞著國人……

現在來個快刀斬亂麻,let’s go
由於項目前期使用的是1.2.6版本,後期使用的是1.3.2版本,所以分開來講;

說說實現的辦法,有點暴力——直接修改jQury源碼,不過不用擔心,不會影響整體功能而且就修改幾行代碼就可以解決亂碼,也就是在發送請求的時候把參數值再進行一次轉碼,修改的方法為param

 

 1、jQuery 1.2.6 亂碼解決辦法

  • 開啟1.2.6版本的源檔案
  • 找到第2911、2921、2924行,分別修改對應參數值的地方包裹一層encodeURIComponent即可,修改後的結果如下: param: function( a ) {<br /> var s = [];</p><p> // If an array was passed in, assume that it is an array<br /> // of form elements<br /> if ( a.constructor == Array || a.jquery )<br /> // Serialize the form elements<br /> jQuery.each( a, function(){<br /> s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent(encodeURIComponent( this.value )) );<br /> });</p><p> // Otherwise, assume that it's an object of key/value pairs<br /> else<br /> // Serialize the key/values<br /> for ( var j in a )<br /> // If the value is an array then the key names need to be repeated<br /> if ( a[j] && a[j].constructor == Array )<br /> jQuery.each( a[j], function(){<br /> s.push( encodeURIComponent(j) + "=" + encodeURIComponent(encodeURIComponent( this )) );<br /> });<br /> else<br /> s.push( encodeURIComponent(j) + "=" + encodeURIComponent(encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] )) );</p><p> // Return the resulting serialization<br /> return s.join("&").replace(/%20/g, "+");<br /> }<br />

下載:jquery-encode-gbk.1.2.6.js
下載:jquery-encode-gbk.pack.1.2.6.js

 

2、jQuery 1.3.2 亂碼解決辦法

1.3.2的就不用這麼麻煩了,因為這個版本簡化了param方法的結構,只需要修改一行代碼即可,因為只有一個地方轉碼了

找到第3737行,同樣包裹一層encodeURIComponent,結果如下:

param: function( a ) {<br /> var s = [ ];</p><p> function add( key, value ){<br /> s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(encodeURIComponent(value));<br /> };<br />

下載:jquery-encode-gbk-1.3.2.js
下載:jquery-encode-gbk-.pack.1.3.2.js 

 

 

 

  轉載請標明出處 http://blog.csdn.net/shimiso 

技術交流群:173711587

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.