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,type:"get",complete: function(){ }
这样的话,需要特别注意:
var data= encodeURI(encodeURI(data));
要encodeURI两次,而post只需要1次,为什么url传需要encodeURI两次呢?
这是因为,encodeURI后,如:“我”,会被encodeURI成%E6,,通过url传,%是特殊字符,需要再转一次,将% encode成%25才行,否则%E6会被自动识别其他字符,所以通过url传需要encodeURI两次,传到后台接收参数时才会识别成%E6,再转才有效。
而post是直接传参,是不会存在%特殊字符被转问题,所以不需要encodeURI两次。