Ajax傳遞參數是中文的話,需要進行encodeURI轉碼,可分get方法和post方法,建議用post方法傳參,因爲get方法傳參長度會有限制,太長傳不了。
以下是post方式
var data= encodeURI(data); //post方式傳的話,encodeURI一次就可以了
$.ajax({
url:"test!xxx.action",
dataType: "json",
cache:false,
data:{data:data},
type:"post",
success: function(data, status) {
...
},
error: function(xhr, desc, err) {
},
complete: function(){
}
後臺解碼方式如下:
String text = URLDecoder.decode(data, "UTF-8");
如果用get,很多人喜歡才url後面傳參
var data= encodeURI(encodeURI(data)); //post方式傳的話,encodeURI一次就可以了
$.ajax({
url:"test!xxx.action?data=" + data,
dataType: "json",
cache:false,
type:"get",
success: function(data, status) {
...
},
error: function(xhr, desc, err) {
},
complete: function(){
}
這樣的話,需要特別注意:
var data= encodeURI(encodeURI(data));
要encodeURI兩次,而post只需要1次,爲什麼url傳需要encodeURI兩次呢?
這是因爲,encodeURI後,如:“我”,會被encodeURI成%E6,,通過url傳,%是特殊字符,需要再轉一次,將% encode成%25才行,否則%E6會被自動識別其他字符,所以通過url傳需要encodeURI兩次,傳到後臺接收參數時纔會識別成%E6,再轉纔有效。
而post是直接傳參,是不會存在%特殊字符被轉問題,所以不需要encodeURI兩次。
get和post後臺解密方法都一樣。