最近在做專案時,ajax引數中出現了特殊字元(#)導致路徑出現截斷問題,去度娘找了下答案,找到了解決辦法,在js中有個:escape() 函式
看下函式介紹
escape() 函式可對字串進行編碼,這樣就可以在所有的計算機上讀取該字串。
例子輸出:
visit%20w3school%21
%3f%21%3d%28%29%23%25%26
如果有這個url編碼的轉換,那麼我們可以在後台通過urldecoder.decode(string s, string enc)來解碼,轉換回去。
說明:該方法不會對 ascii 字母和數字進行編碼,也不會對下面這些 ascii 標點符號進行編碼: * @ - _ + . / 。其他所有的字元都會被轉義序列替換。
發現了吧,對escape()方法不是對所有的特殊字元進行url編碼。那麼如果我們需求中有這些東西怎麼辦?
解決方法1.手動替換,使用replace方法對這些字元進行替換。(附上,常見的url編碼)
常見字元的url編碼列表:
保留字元的url編碼 !
*"'(
);:@
&%21
%2a
%22
%27
%28
%29
%3b
%3a
%40
%26
=+
$,/?
%#%3d
%2b
%24
%2c
%2f
%3f
%25
%23
%5b
%5d
escape() 方法:
採用iso latin字符集對指定的字串進行編碼。所有的空格符、標點符號、特殊字元以及其他非ascii字元都將被轉化成%xx格式的字元編碼(xx等於該字元在字符集表裡面的編碼的16進製制數字)。比如,空格符對應的編碼是%20。
不會被此方法編碼的字元: @ * / +
encodeuri() 方法:
把uri字串採用utf-8編碼格式轉化成escape格式的字串。
不會被此方法編碼的字元:! @ # $& * ( ) = : / ; ? + '
encodeuricomponent() 方法:
把uri字串採用utf-8編碼格式轉化成escape格式的字串。與encodeuri()相比,這個方法將對更多的字元進行編碼,比如 / 等字元。所以如果字串裡面包含了uri的幾個部分的話,不能用這個方法來進行編碼,否則 / 字元被編碼之後url將顯示錯誤。
不會被此方法編碼的字元:! * ( ) '
關於Ajax中URL的備忘
ajax中的url有絕對路徑和相對路徑之分 專案部署路徑為 http jsy 005 8080 xy plan 注 jsy 005 1.如果ajax中url寫成如下的格式 ajax error function err 那麼,最後的請求路徑為 這是因為url中以 開頭,意思是直接找到當前頁面的url...
設定URL路徑引數,解析URL引數函式
function throwifmissing description 設定url引數 method seturlparams param url url路徑,如或pages veiw login param params 設定的引數,物件格式,如 param iscoveroldparam 是否覆...
關於ajax中async引數的感悟
async,這個引數預設為true。就是非同步去處理資訊。當把它設定為false的時候,就是同步去處理資料了。同步的時候,能夠獲取到res的值。非同步的時候,就獲取不到了。第二點,同步的時候,只要這樣寫,就會執行reset current phone中的 最後才進行跳轉。function do ba...