Ajax传参中文问题

前端之家收集整理的这篇文章主要介绍了Ajax传参中文问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。



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两次。


get和post后台解密方法都一样。

猜你在找的Ajax相关文章