[爆卦]ajax中文是什麼?優點缺點精華區懶人包

為什麼這篇ajax中文鄉民發文收入到精華區:因為在ajax中文這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者arliang (arliang)看板Ajax標題[問題] jquery 的ajax如何傳中文值...


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)
TonyQ:如果後端接到的是亂碼,那我覺得是你後端接錯的可能性 09/06 10:46
TonyQ:比較高. 09/06 10:46
TonyQ:還是你用傳統的ajax接到的就會是正常的中文 ? @_@ 09/06 10:46
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)
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)
s25g5d4:先將傳送的資料encode一下? 09/06 18:59
TonyQ:我在猜會不會是post跟get的差異? ajax default是get 09/06 19:03
TonyQ:加上type 參數給 POST 看看? 09/06 19:04
TonyQ:content-type 應該不用給,那理論上不會有影響. 09/06 19:04
TonyQ:default的context-type是 09/06 19:05
TonyQ:'application/x-www-form-urlencoded' 09/06 19:05
TonyQ:所以應該不用另外給才對 09/06 19:05
TonyQ:看看這樣能不能幫上忙 :) 09/06 19:05
adahsu:我有遇到在 IE 時一定要在 context-type 加 charset 才行 09/07 10:00
TonyQ:除非charset 環境不同 09/07 10:59
TonyQ:不然應該沒有 contenxt-type 一定要加 charset 的情形. 09/07 11:00
TonyQ:至少在常態的環境下這個不是必須的。(基本上我沒寫過要改 09/07 11:00
TonyQ:context-type 的application,唯一的例外就是 utf-8 跟big5 09/07 11:00
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)
adahsu:因為就是遇到不加不行啊... 只有 IE6/7/8 有此問題... 09/13 12:31
TonyQ:有可能是我看得不夠多 XD 不過是什麼情形不這樣寫不會過啊? 09/13 23:02
TonyQ:你看原po也說他沒寫還是過了啊 XD 09/13 23:02

你可能也想看看

搜尋相關網站