encodeURIComponent(URI)
MDN解釋:
encodeURIComponent(URI) 都是對統一資源標識符(URI)的組成部分進行編碼的方法。
返回值:
返回URIstring的副本,其中的某些字符將被十六進制的轉義序列進行替換。
說明:
(1)該方法不會對ASCLL、字母、數字進行編碼,也不會對ASCLL標點符號進行編碼:如:- . ! ~ * ' ( )
(2)其他字符(比如:; / ? : @ & = + $ , # 這些用於分割URI組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。
decodeURIComponent(url) 函數
用法:
decodeURIComponent() 函數可把字符串作爲 URI 組件進行解碼。
返回值:
解碼後的文本或URI組件
在使用js的jQuery的post向後臺servlet傳遞拼接的字符串數據時,一些特殊的字符例如:“+、@、#、
$、%、&、?、/”等無法傳遞到後臺輸出。
舉個例子:
var str1="a+aa+bb@kk$dd";
var data="data1"="+str1+"+"&"+"data2"+str2;
如果不進行編碼,則通過js的jQuery的post或者使用window.self.location傳遞數據到後臺,都會造成+、@、$字符無法正常輸出。
正確寫法:
var str1=encodeURIComponent("a+aa+bb@kk$dd");
var data="data1"="+str1+"+"&"+"data2"+str2;
小知識
<1> 什麼是URI
URI, 統一資源標識符( Unifrom Resource Identifier, URI ),表示的是web上每一中可用的資源,如: html文檔、圖像、視頻短片、程序等都由一個 URI 進行定位的。
<2> URI的組成部分
URI通常有三部分組成:
(1)訪問資源的命名機制。
(2)存放資源的主機名。
(3)資源自身的名字。
<3> URI舉例
如:https://blog.csdn.net/qq_1063614453/article/details/111
我們可以這樣解釋:
(1)這是一個可以通過https 協議訪問的資源,
(2)位於主機 blog.csdn.net 上,
(3)通過 "/qq_1063614453/article/details/111" 可以對資源進行唯一標識
注意:以上三點只不過是對示例的解釋,這三點並不是URI的必要條件,URI只是一種概念,怎樣實現無所謂,只要它唯一標識一個資源就可以。