JQuery的Ajax中Post方法傳遞中文出現(xiàn)亂碼的解決方法
本文實(shí)例講述了JQuery中Post傳遞中文出現(xiàn)的解決方法,即亂碼ajax與jquery.ajax中文參數(shù)post傳遞亂碼處理方法。分享給大家供大家參考。具體分析如下:
問(wèn)題一:
今天在做項(xiàng)目時(shí),需要用到Ajax,之前我在用GET方式傳遞中文參數(shù)時(shí),只需要在后臺(tái)程序中設(shè)置頁(yè)面編碼為GB2312即中文能正常顯示,可是這次由于表單項(xiàng)目較多,不適合用GET方式傳遞,只能用POST方式,但發(fā)現(xiàn)后臺(tái)程序中設(shè)置編碼為GB2312時(shí)中文還是顯示的亂碼。經(jīng)過(guò)一番研究問(wèn)題才最終得到解決。
解決方法:
解決此問(wèn)題的方法非常簡(jiǎn)單,只需要在JS處理參數(shù)時(shí)用escape()函數(shù)處理一下即可,而且不需要再用unescape()解碼,這個(gè)方法適合POST和GET方式,具體的Ajax代碼這里我不例出,這里給出用escape()函數(shù)處理參數(shù)時(shí)的代碼:
通常我們?cè)谔幚鞟jax的時(shí)候會(huì)在這里直接獲取參數(shù)的值,為了使中文參數(shù)不是亂碼,我們只需要用escape()函數(shù)對(duì)參數(shù)處理下即可。
問(wèn)題二:
當(dāng)網(wǎng)站頁(yè)面不是utf-8編碼時(shí),ajax提交的中文便會(huì)變成亂碼。
解決方法如下:
找到j(luò)query.js里的contentType:application/x-www-form-urlencoded,將它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。
原因:未指定charset時(shí),jquery使用ISO-8859-1,ISO8859-1,通常叫做Latin-1。Latin-1包括了書(shū)寫(xiě)所有西方歐洲語(yǔ)言不可缺少的附加字符。jquery的ajax根本沒(méi)有考慮到國(guó)際化的問(wèn)題,而使用了歐洲的字符集,所以傳遞中文時(shí)才會(huì)出現(xiàn)亂碼
我很久以前一直在使用Prototype框架。在.net-GB2312或jsp教程-utf8下都使用過(guò),從來(lái)沒(méi)遇到有字符編碼的問(wèn)題。于是將Prototype和JQuery代碼都下載下來(lái)打開(kāi)研究原因。
不同之處在于JQuery默認(rèn)的contentType:application/x-www-form-urlencoded
而Prototype則是contentType:application/x-www-form-urlencoded; charset=UTF-8
這才是JQuery正在亂碼的原因,在未指定字符集的時(shí)候,是使用ISO-8859-1
ISO8859-1,通常叫做Latin-1。Latin-1包括了書(shū)寫(xiě)所有西方歐洲語(yǔ)言不可缺少的附加字符。
JQuery的Ajax根本沒(méi)有考慮到國(guó)際化的問(wèn)題,使用了歐洲的字符集,所以才引起了傳遞中文出現(xiàn)亂碼的問(wèn)題。
而我們的UTF-8則可以解決這一問(wèn)題。
最終指需要修改JQuery的代碼,顯式聲明contentType使用utf-8字符集,即可解決GB2312中文傳遞的問(wèn)題。
只需要簡(jiǎn)單的將JQuery的代碼加以修改,加上charset=UTF-8就可以了,這樣不需要改變改什么web.config或什么在頁(yè)面中改編碼什么的了,也不需要用escapc(str)再在服務(wù)端解碼。英文怎么傳遞,中文也怎么傳遞。
這里給段簡(jiǎn)單的代碼測(cè)試一下:
test.html頁(yè)面代碼:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<script type="text/網(wǎng)頁(yè)特效" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function DoAjax(){
$.post("AjaxTest.aspx",{txt:$("#tbox1").val()},
function(data){
$("#AjaxResponse").text(data);
}
);
}
</script>
</head>
<body>
<p><a href="javascript:DoAjax();">AjaxTest</a><input name="tbox1" id="tbox1" type="text" /></p>
<div id="AjaxResponse"></div>
</body>
</html>
AjaxTest.aspx處理頁(yè)面:
<script runat="server">
string parms;
void Page_Load(object sender , EventArgs e)
{
parms=Request["txt"];
if (String.IsNullOrEmpty(parms)){
Response.Write("Is Null");
}else{
Response.Write(parms);
}
}
</script>
此外,由于Ajax的默認(rèn)漢字編碼是utf-8,因此比較保險(xiǎn)的方法是保證所涉及的頁(yè)面統(tǒng)一編碼格式為utf-8。
希望本文所述對(duì)大家基于的jQuery的Ajax程序設(shè)計(jì)有所幫助。
- js與jQuery終止正在發(fā)送的ajax請(qǐng)求的方法
- jQuery通過(guò)Ajax向PHP服務(wù)端發(fā)送請(qǐng)求并返回JSON數(shù)據(jù)
- jquery跨域請(qǐng)求示例分享(jquery發(fā)送ajax請(qǐng)求)
- jquery+ajax每秒向后臺(tái)發(fā)送請(qǐng)求數(shù)據(jù)然后返回頁(yè)面的代碼
- jQuery發(fā)請(qǐng)求傳輸中文參數(shù)亂碼問(wèn)題的解決方案
- jQuery Ajax傳值到Servlet出現(xiàn)亂碼問(wèn)題的解決方法
- jQuery ajax方法傳遞中文時(shí)出現(xiàn)中文亂碼的解決方法
- JQuery ajax 返回json時(shí)出現(xiàn)中文亂碼該如何解決
- JQuery發(fā)送ajax請(qǐng)求時(shí)中文亂碼問(wèn)題解決
相關(guān)文章
jQuery實(shí)現(xiàn)的多滑動(dòng)門(mén),多選項(xiàng)卡效果代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)的多滑動(dòng)門(mén),多選項(xiàng)卡效果代碼,具有tab切換與滑動(dòng)門(mén)的功能,涉及鼠標(biāo)事件的響應(yīng)與頁(yè)面元素屬性動(dòng)態(tài)變換操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03
jquery validate poshytip 自定義樣式
項(xiàng)目中做了一個(gè)jquery.validate氣泡提示在新版的jquery.validate中,有這個(gè)功能,但在我這里不怎么好用,所以自己加了一個(gè),找了一些插件qtip2的樣式不錯(cuò),需要的朋友可以參考下2012-11-11
使用jQuery實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊左右按鈕滑動(dòng)切換
在做web前端開(kāi)發(fā)的時(shí)候經(jīng)常遇到圖片滑動(dòng)切換特效,接下來(lái)通過(guò)本文給大家分享使用jQuery實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊左右按鈕滑動(dòng)切換特效,感興趣的朋友參考實(shí)現(xiàn)代碼2017-08-08
JQuery 無(wú)廢話系列教程(一) jquery入門(mén) [推薦]
貝殼(就是本文作者了)也屬于剛剛會(huì)用點(diǎn)JQuery的那一類型, 在學(xué)習(xí)過(guò)程中也遇到挺多問(wèn)題,特別是在開(kāi)始入門(mén)的時(shí)候.一直準(zhǔn)備寫(xiě)些有關(guān)JQuery的文章,但又恐自己文筆及表達(dá)能力有限而"誤人子弟",最終還是鼓起勇氣. 如在文章中有錯(cuò)誤或者不合適的理解望廣大朋友直接指出批評(píng).2009-06-06
easyui Droppable組件實(shí)現(xiàn)放置特效
droppable和draggable有類似的地方,不過(guò)區(qū)別點(diǎn)在于前者著重于將元素放進(jìn)某個(gè)容器中,而后者則著重于可拖拽(雖然可能一些效果兩者都可以實(shí)現(xiàn))。而且通過(guò)查看easyloader源碼可知道,droppable并不依賴于draggable。2015-08-08
基于Jquery的實(shí)現(xiàn)回車鍵Enter切換焦點(diǎn)
系統(tǒng)默認(rèn)情況下,使用Tab按鍵切換頁(yè)面元素的焦點(diǎn),有沒(méi)有想過(guò)回車鍵Enter也可以實(shí)現(xiàn)這種功能,并且具有良好的用戶體驗(yàn)。2010-09-09
修復(fù)jQuery tablesorter無(wú)法正確排序的bug(加千分位數(shù)字后)
這篇文章主要介紹了如何修復(fù)jQuery tablesorter無(wú)法正確排序的bug(加千分位數(shù)字后)的相關(guān)資料,需要的朋友可以參考下2016-03-03

