在沒步入正軌之前,先給大家介紹JavaScript 特殊字符
你可以在 JavaScript 中使用反斜槓來向文本字符串添加特殊字符。
插入特殊字符
反斜槓用來在文本字符串中插入省略號、換行符、引號和其他特殊字符。
請看下面的 JavaScript 代碼:
var txt="We are the so-called "Vikings" from the north." document.write(txt)
在 JavaScript 中,字符串使用單引號或者雙引號來起始或者結束。這意味著上面的字符串將被截為:We are the so-called。
要解決這個問題,就必須把在 "Viking" 中的引號前面加上反斜槓 (\)。這樣就可以把每個雙引號轉換為字面上的字符串。
var txt="We are the so-called \"Vikings\" from the north." document.write(txt)
現在 JavaScript 就可以輸出正確的文本字符串了:We are the so-called "Vikings" from the north。
這是另一個例子:
document.write ("You \& me are singing!")
上面的例子會產生以下輸出:
You & me are singing!
下面的表格列出了其余的特殊字符,這些特殊字符都可以使用反斜槓來添加到文本字符串中:
背景:
今天在做一個任務時,用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 組件地標點符號),都是由一個或多個十六進制地轉義序列替換地.
jQuery ajax特殊字符參數
在做ajax登錄時候遇到的一個問題,當傳入參數含有特殊字符,比如:“$'#@”等。參數傳遞會有問題,無法正確獲取。
$.ajax({ url: '/user/login.ydd', type:'post', data:'name=abce&password=abcd&pwd', success: function(data){ } })
我要傳入的是用戶名為:abc,密碼為abcd&pwd的用戶登錄。但傳入後台獲取參數,會被password=abcd當作一個參數傳遞,&這個特殊將pwd分開了作為另一個參數解析了。
解決方法,這時候就需要ajax另外一種傳遞參數的方式
$.ajax({ url: '/user/login.ydd', type:'post', data:{'name':'abce','password':'abcd&pwd'}, success: function(data){ } })