Ajax传参中文问题

来源:互联网 发布:简述数据库系统的特点 编辑:程序博客网 时间:2024/06/05 17:44



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后台解密方法都一样。




0 0