背景:
今天在做乙個任務時,用jquery的ajax傳遞一長串字元時,在後台的驗證一直不成功,糾結時我了(那個字串是隨機生成的,特長)。查了一上午,原來是我生成的字串中有+號,而在js傳遞的時候,會理解為是連線字元用的,到了後台就將+號自動變為空格了,所以後台的字串和前台生成的已經不一樣了。
原因:js後自動解析特殊字元,如+號為連線符,解析為空格,&為變數連線符,伺服器端接受資料時&以後的資料不顯示等等。
解決辦法:
1、將字元放到form中,然後用js提交form表單到伺服器。
2、將字元中的特殊字元替換成十六進製制的字元,一些特殊字元與十六進製制的對應關係:+空格
/?%&
=#%2b%20
%2f%3f
%25%26
&3d%23
str = str.replace(/\+/g,"%2b"); 將+號替換為十六進製制
3、最簡單的一種,使用encodeuricomponent()函式。
該方法不會對 ascii 字母和數字進行編碼,也不會對這些 ascii 標點符號進行編碼: - _ . ! ~ * ' ( ) 。
其他字元(比如 :;/?:@&=+$,# 這些用於分隔 uri 元件的標點符號),都是由乙個或多個十六進製制的轉義序列替換的。
這篇文章主要介紹了js中傳遞特殊字元(+,&)的方法,有需要的朋友可以參考一下
背景:今天在做乙個任務時,用jquery的ajax傳遞一長串字元時,在後台的驗證一直不成功,糾結時我了(那個字串是隨機生成的,特長)。查了一上午,原來是我生成的字串中有+號,而在js傳遞的時候,會理解為是連線字元用的,到了後台就將+號自動變為空格了,所以後台的字串和前台生成的已經不一樣了。
原因:js後自動解析特殊字元,如+號為連線符,解析為空格,&為變數連線符,伺服器端接受資料時&以後的資料不顯示等等。
解決辦法:
1、將字元放到form中,然後用js提交form表單到伺服器。
2、將字元中的特殊字元替換成十六進製制的字元,一些特殊字元與十六進製制的對應關係:+空格
/?%&
=#%2b%20
%2f%3f
%25%26
&3d%23
str = str.replace(/\+/g,"%2b"); 將+號替換為十六進製制
3、最簡單的一種,使用encodeuricomponent()函式。
該方法不會對 ascii 字母和數字進行編碼,也不會對這些 ascii 標點符號進行編碼: - _ . ! ~ * ' ( ) 。
其他字元(比如 :;/?:@&=+$,# 這些用於分隔 uri 元件的標點符號),都是由乙個或多個十六進製制的轉義序列替換的。
js過濾url中的特殊字元
在url傳遞引數中,有一些特殊字元,而這些些符號在url中是不能直接傳遞的,如果要在url中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些url特殊符號及編碼十六進製制值 1.url 中 號表示空格 2b 2.空格 url中的空格可以用 號或者編碼 20 3.分隔目錄和子目錄 2f 4...
url 傳遞引數 特殊字元 解決方法
0 9,a z,a z encodeuricomponent不編碼字元有71個 0 9,a z,a z 以下是url中可能用到的特殊字元及在url中的經過編碼後的值 字元特殊字元的含義 url編碼 用來標誌特定的文件位置 23 對特殊字元進行編碼 25 分隔不同的變數值對 26 在變數值中表示空格 ...
url 傳遞引數 特殊字元 解決方法
有些符號在url中是不能直接傳遞的,如果要在url中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些url特殊符號及編碼 十六進製制值1.url 中 號表示空格 2b2.空格url中的空格可以用 號或者編碼 203.分隔目錄和子目錄 2f4.分隔實際的 url 和引數 3f5.指定特殊字...