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,
    		    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後臺解密方法都一樣。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章