首頁  >  文章  >  web前端  >  JQuery的Ajax中Post方法傳遞中文出現亂碼的解決方法_jquery

JQuery的Ajax中Post方法傳遞中文出現亂碼的解決方法_jquery

WBOY
WBOY原創
2016-05-16 16:33:071276瀏覽

本文實例講述了JQuery中Post傳遞中文出現的解決方法,即亂碼ajax與jquery.ajax中文參數post傳遞亂碼處理方法。分享給大家供大家參考。具體分析如下:

問題一:

今天在做專案時,需要用到Ajax,之前我在用GET方式傳遞中文參數時,只需要在後台程式中設定頁面編碼為GB2312即中文能正常顯示,可是這次由於表單項目較多,不適合用GET方式傳遞,只能用POST方式,但發現後台程式中設定編碼為GB2312時中文還是顯示的亂碼。經過一番研究問題才終於解決。

解決方法:

解決此問題的方法非常簡單,只需要在JS處理參數時用escape()函數處理一下即可,而且不需要再用unescape()解碼,這個方法適合POST和GET方式,具體的Ajax程式碼這裡我不例出,這裡給用escape()函數處理參數時的程式碼:

複製代碼 代碼如下:
var htmer ="getcode=" escapeent=" escape(Content);
 

通常我們在處理Ajax的時候會在這裡直接取得參數的值,為了使中文參數不是亂碼,我們只需要用escape()函數對參數處理下即可。

問題二:

當網站頁面不是utf-8編碼時,ajax提交的中文就會變成亂碼。

解決方法如下:

找到jquery.js裡的contentType:application/x-www-form-urlencoded,將它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。

原因:未指定charset時,jquery使用ISO-8859-1,ISO8859-1,通常稱為Latin-1。 Latin-1包括了書寫所有西方歐洲語言中不可缺少的附加字元。 jquery的ajax完全沒有考慮到國際化的問題,而使用了歐洲的字符集,所以傳遞中文時才會出現亂碼

我很久以前一直在使用Prototype框架。在.net-GB2312或jsp教學-utf8下都使用過,從來沒遇到有字元編碼的問題。於是將Prototype和JQuery程式碼都下載下來開啟研究原因。

不同之處在於JQuery預設的contentType:application/x-www-form-urlencoded

而Prototype則是contentType:application/x-www-form-urlencoded; charset=UTF-8

這就是JQuery正在亂碼的原因,在未指定字元集的時候,是使用ISO-8859-1

ISO8859-1,通常叫做Latin-1。 Latin-1包括了書寫所有西方歐洲語言中不可缺少的附加字元。

JQuery的Ajax完全沒有考慮到國際化的問題,使用了歐洲的字元集,所以才引起了傳遞中文出現亂碼的問題。

而我們的UTF-8則可以解決這個問題。

最終指需要修改JQuery的程式碼,明確聲明contentType使用utf-8字元集,即可解決GB2312中文傳遞的問題。

只需要簡單的將JQuery的程式碼加以修改,加上charset=UTF-8就可以了,這樣不需要改變改什麼web.config或什麼在頁面中改編碼什麼的了,也不需要用escapc (str)再在服務端解碼。英文怎麼傳遞,中文也怎麼傳遞。

這裡給段簡單的程式碼測試一下:

test.html頁面代碼:

複製代碼 代碼如下:





陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn