作者arliang (arliang)
看板Ajax
标题[问题] jquery 的ajax如何传中文值
时间Mon Sep 6 10:43:31 2010
jQuery.ajax({
url: "
http://"+serverIP+"/rcv/reg.do",
data: "method=executeAdd&queryCaseNo="+"中文喔",
dataType: 'xml',
contentType: "text/html; charset=big5",
error: function(xhr) {
$('errMsg').innerHTML = "Ajax request 发生错误";
alert('Ajax request 发生错误');
},
success: function(response) {
parserAddResult(response,'add');
location.href="
#rcvDataHref";
}
});
其中contentType 我试过 big5 、 UTF-8、ISO8859-1
每次後端接到的中文都是乱码
也爬过文,
http://www.showfan.cn/share.php?pid=171
不想使用URL 编码、也不想在struts後端做字码转换、
难道真的只能使用传统的ajax吗?
requester.open("POST","
http://"+serverIP+"/rcv/reg.do",true);
requester.onreadystatechange=function() {getQueryResult("AddResult")};
requester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
requester.send("method=executeAdd"+sendStr);
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.175.188
※ 编辑: arliang 来自: 59.120.175.188 (09/06 10:46)
1F:→ TonyQ:如果後端接到的是乱码,那我觉得是你後端接错的可能性 09/06 10:46
2F:→ TonyQ:比较高. 09/06 10:46
3F:→ TonyQ:还是你用传统的ajax接到的就会是正常的中文 ? @_@ 09/06 10:46
4F:→ TonyQ:环境给多一点比较好判断 09/06 10:46
我後来改用传统的ajax,就会是正常中文,後端sever是UTF-8编码、jdk 1.5、tomcat
前端网页也是utf-8编码,firefox。谢谢~
※ 编辑: arliang 来自: 59.120.175.188 (09/06 12:04)
5F:→ TonyQ:(思)附上你传统ajax作法的code上来应该会比较清楚 09/06 14:31
文末的code 就是传统的ajax,但是内容有省略
以下是完整的code
var requester = null;
if(window.XMLHttpRequest) {
try {
requester = new XMLHttpRequest();
} catch(e) {
requester = null;
}
// branch for IE/Windows ActiveX version
} else if(window.ActiveXObject) {
try {
requester = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
requester = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
requester = null;
}
}
}
var serverIP = '<%=request.getServerName()+":"+
request.getServerPort()+
request.getContextPath() %>';
requester.open("POST","
http://"+serverIP+"/rcv/reg.do",true);
requester.onreadystatechange =
parserAddResult(requester.responseXML,"add");
requester.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
requester.send("method=executeAdd&queryCaseNo="+"中文喔");
function parserAddResult(xmlDoc,actionType){
if (actionType == "add"){
......
}else if .........
}
谢谢~
※ 编辑: arliang 来自: 59.120.175.188 (09/06 14:56)
6F:推 s25g5d4:先将传送的资料encode一下? 09/06 18:59
7F:→ TonyQ:我在猜会不会是post跟get的差异? ajax default是get 09/06 19:03
8F:→ TonyQ:加上type 参数给 POST 看看? 09/06 19:04
9F:→ TonyQ:content-type 应该不用给,那理论上不会有影响. 09/06 19:04
10F:→ TonyQ:default的context-type是 09/06 19:05
11F:→ TonyQ:'application/x-www-form-urlencoded' 09/06 19:05
12F:→ TonyQ:所以应该不用另外给才对 09/06 19:05
13F:→ TonyQ:看看这样能不能帮上忙 :) 09/06 19:05
14F:推 adahsu:我有遇到在 IE 时一定要在 context-type 加 charset 才行 09/07 10:00
15F:→ TonyQ:除非charset 环境不同 09/07 10:59
16F:→ TonyQ:不然应该没有 contenxt-type 一定要加 charset 的情形. 09/07 11:00
17F:→ TonyQ:至少在常态的环境下这个不是必须的。(基本上我没写过要改 09/07 11:00
18F:→ TonyQ:context-type 的application,唯一的例外就是 utf-8 跟big5 09/07 11:00
19F:→ TonyQ:沟通。) 09/07 11:00
TonyQ 大大说对了
正解~感激不尽~
答案是POST与GET的差异造成中文传到後端变乱码
contenxt-type 可以不用加
至少FF 与 IE7 都试过了,
我先提供简单的Code给各位参考
1. 第一种
jQuery.ajax({
type: 'POST',
dataType: 'xml',
url: "
http://"+serverIP+"/rcv/reg.do",
data: "method=executeAdd&queryCaseNo=我是中文",
error: function(xhr) {
alert('Ajax request 发生错误');
},
success: function(response) {
alert('好棒喔');
}
});
url: "
http://"+serverIP+"/rcv/reg.do",
data: "method=executeAdd&queryCaseNo=我是中文",
error: function(xhr) {
alert('Ajax request 发生错误');
},
success: function(response) {
alert('好棒喔');
}
});
2. 第二种
jQuery.post("
http://"+serverIP+"/fcms/rcv/registration.do",
"method=executeAdd&queryCaseNo=我是中文",
function(response){
alert('好棒喔');
},
"xml"
);
※ 编辑: arliang 来自: 59.120.175.188 (09/07 11:35)
20F:推 adahsu:因为就是遇到不加不行啊... 只有 IE6/7/8 有此问题... 09/13 12:31
21F:→ TonyQ:有可能是我看得不够多 XD 不过是什麽情形不这样写不会过啊? 09/13 23:02
22F:→ TonyQ:你看原po也说他没写还是过了啊 XD 09/13 23:02