ajax 中關於URL路徑及引數特殊字元問題

2021-07-04 13:34:13 字數 1420 閱讀 9173

最近在做專案時,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...