首頁 >web前端 >js教程 >jquery亂碼與contentType屬性設定問題解決方案_jquery

jquery亂碼與contentType屬性設定問題解決方案_jquery

WBOY
WBOY原創
2016-05-16 17:44:23994瀏覽

今天閒的無聊,把以前遺留下來的問題解決一下,例如讓人頭痛的Jquery亂碼問題。其實這方面文章已經很多了,但全面解決各種問題的很少,今天總結一下,方便自己也方便大家。

原因很簡單: 其實他的中文亂碼就是因為contentType沒有指定編碼,對於不同Jquery的版本中這個地方有不同的設置,就拿我遇到的,jquery- 1.6.1和jquery-1.8.3就有不同的定義。

解決方法:在jquery-1.6.1檔案中,搜尋'contentType' 然後在application/x-www-form-urlencoded後面加上; charset=UTF-8 最終變成contentType:"application/x-www-form-urlencoded; charset=UTF-8"即可。
這樣透過post方法提交後會出現亂碼的問題就可以完美解決。

如果還有亂碼現象,只能說你接收頁面的編碼也有問題, 這是由於非同步物件XMLHttpRequest在處理回傳的responseText的時候,是按UTF-8編碼進行解碼的。所以post方式的話,必須把這個頁面另存一下,將頁面檔案的編碼改為 UTF-8 (請務必記住)。
jquery亂碼與contentType屬性設定問題解決方案_jquery 
沒修改前,整個FROM表單資料全部為亂碼狀態,對於這種情況,大家按以上方法可以輕鬆解決。

以下是一些特別情況的問題總結,來自網絡:
JQuery Ajax提交出現中文亂碼的解決辦法2
前使用Jquery的時候一直沒有發現,用Ajax提交的時候會出現亂碼,我猜測可能是因為編碼的原因

可能存在以下幾點原因
1.HTML的編碼不統一:如頁面用的GB2312,好像JQuery對它支援不太好。以前我一直都是用UTF-8的,一直都沒有發現;
2.檔案的編碼,這個不好在表面上看到,簡體中文版的作業系統存的文字格式的檔案預設是GB2312,建議把文件換成UTF-8格式的
最簡單的解決辦法,把提交的中文文字用JS的escape 處理一下,就不會現出現亂碼了。
如:

複製程式碼 程式碼如下:

///儲存資料
$.ajax({
url:"/guide/savecomments.aspx" ,
type:"POST" ,
dataType:"json" ,
data:"Action=SaveComment&CommNickName=" escape( CommNickName.val()) "&CommContent=" escape(CommContent.val()) "&GuideID=" GuideID.val() "&ScoreLogType=",
success:function(results){
alert(results.message);

--------------------------------- ----------------------------------------------
解決的辦法上用js的編碼函數encodeURIComponent(string)處理一下,把中文"王曉明"編碼成"王曉明",就OK了。 -------------------------------------------------- -----------------------------
今天在使用jquery檢測使用者名稱的時候,對英文和數字的使用者名稱檢測正確,但是對中文的時候,檢測出錯,經過在網上查詢一段時間,終於找到了原因,是亂碼問題,解決方法:
1、只要在ajax中有數據提交時,如果頁面編碼不是utf- 8的,都應該對提交的資料進行編碼,js的編碼函數為escape()
2、在伺服器端頁接收資料後進行解碼,然後對資料進行相關的處理後再編碼
3、回到客戶端後再解碼
4、如果沒有提交數據,而是直接從伺服器端取得數據,那直接在伺服器頁面設定Response.Charset="gb2312"即可,不用再編碼解碼
vbscript中分別對應js中的escape()和unescape()函數程式碼
------------------------------- ------------------------------------------------

透過以下處理方式解決
傳遞參數的時候對參數進行編碼priceName="encodeURI(priceName)",也可以用encodeURIComponent(); 伺服器端不需要做其他處理: String priceName = request.getParameter("priceName");
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn