真正的JQuery.ajax傳遞中文參數(shù)的解決方法
我很久以前一直在使用Prototype框架。在.net-GB2312或jsp-utf8下都使用過,從來沒遇到有字符編碼的問題。于是將Prototype和JQuery代碼都下載下來打開研究原因。具體結(jié)果如下
不同之處在于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包括了書寫所有西方歐洲語言不可缺少的附加字符。
JQuery的Ajax根本沒有考慮到國際化的問題,使用了歐洲的字符集,所以才引起了傳遞中文出現(xiàn)亂碼的問題。
而我們的UTF-8則可以解決這一問題。
最終指需要修改JQuery的代碼,顯式聲明contentType使用utf-8字符集,即可解決GB2312中文傳遞的問題。
修改如圖:
只需要簡單的將JQuery的代碼加以修改,加上charset=UTF-8就可以了,這樣不需要改變改什么web.config或什么在頁面中改編碼什么的了,也不需要用escapc(str)再在服務(wù)端解碼。英文怎么傳遞,中文也怎么傳遞。
給段簡單的代碼測試一下:
test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<script type="text/javascript" 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:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<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>
- 傳遞參數(shù)的標(biāo)準(zhǔn)方法(jQuery.ajax)
- ajax回調(diào)函數(shù)參數(shù)傳遞正確方法
- jQuery Tips 為AJAX回調(diào)函數(shù)傳遞額外參數(shù)的方法
- JQuery中$.ajax()方法參數(shù)詳解及應(yīng)用
- jquery ajax傳遞中文參數(shù)亂碼問題及解決方法說明
- Jquery中ajax方法data參數(shù)的用法小結(jié)
- 為jquery的ajaxfileupload增加附加參數(shù)的方法
- JQuery中$.ajax()方法參數(shù)詳解
- $.ajax()方法參數(shù)詳解
- ajax傳送參數(shù)含有特殊字符的快速解決方法
- 全面解析$.Ajax()方法參數(shù)(推薦)
相關(guān)文章
jQuery滑動(dòng)到底部加載下一頁數(shù)據(jù)的實(shí)例代碼
這篇文章主要介紹了jQuery滑動(dòng)到底部加載下一頁數(shù)據(jù)的實(shí)例代碼,需要的朋友可以參考下2017-05-05基于jQuery的ajax功能實(shí)現(xiàn)web service的json轉(zhuǎn)化
前面文章說過下次會(huì)給大家介紹詳細(xì)的基于web Services的JqueryAjax調(diào)用如何把一個(gè)datatable得數(shù)據(jù)轉(zhuǎn)化成JSON數(shù)據(jù),然后在客戶端再通過json2.js轉(zhuǎn)化成javascript對象。2009-08-08jQuery動(dòng)態(tài)添加 input type=file的實(shí)現(xiàn)代碼
有時(shí)候需要在頁面上允許用戶上傳多個(gè)文件,個(gè)數(shù)由用戶自己決定,個(gè)數(shù)多了也可以刪除,使用jQuery可以很簡單的實(shí)現(xiàn)這個(gè)功能2012-06-06Jquery Ajax學(xué)習(xí)實(shí)例7 Ajax所有過程事件分析示例
JQuery在執(zhí)行Ajax的過程中會(huì)觸發(fā)很多事件。2010-03-03