本文實例講述了JQuery中Post傳遞中文出現的解決方法,即亂碼ajax與jquery.ajax中文參數post傳遞亂碼處理方法。分享給大家供大家參考。具體分析如下:
問題一:
今天在做專案時,需要用到Ajax,之前我在用GET方式傳遞中文參數時,只需要在後台程式中設定頁面編碼為GB2312即中文能正常顯示,可是這次由於表單項目較多,不適合用GET方式傳遞,只能用POST方式,但發現後台程式中設定編碼為GB2312時中文還是顯示的亂碼。經過一番研究問題才終於解決。
解決方法:
解決此問題的方法非常簡單,只需要在JS處理參數時用escape()函數處理一下即可,而且不需要再用unescape()解碼,這個方法適合POST和GET方式,具體的Ajax程式碼這裡我不例出,這裡給用escape()函數處理參數時的程式碼:
通常我們在處理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頁面代碼:

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用