基于javascript如何傳遞特殊字符
在沒(méi)步入正軌之前,先給大家介紹JavaScript 特殊字符
你可以在 JavaScript 中使用反斜杠來(lái)向文本字符串添加特殊字符。
插入特殊字符
反斜杠用來(lái)在文本字符串中插入省略號(hào)、換行符、引號(hào)和其他特殊字符。
請(qǐng)看下面的 JavaScript 代碼:
var txt="We are the so-called "Vikings" from the north." document.write(txt)
在 JavaScript 中,字符串使用單引號(hào)或者雙引號(hào)來(lái)起始或者結(jié)束。這意味著上面的字符串將被截為:We are the so-called。
要解決這個(gè)問(wèn)題,就必須把在 "Viking" 中的引號(hào)前面加上反斜杠 (\)。這樣就可以把每個(gè)雙引號(hào)轉(zhuǎn)換為字面上的字符串。
var txt="We are the so-called \"Vikings\" from the north." document.write(txt)
現(xiàn)在 JavaScript 就可以輸出正確的文本字符串了:We are the so-called "Vikings" from the north。
這是另一個(gè)例子:
document.write ("You \& me are singing!")
上面的例子會(huì)產(chǎn)生以下輸出:
You & me are singing!
下面的表格列出了其余的特殊字符,這些特殊字符都可以使用反斜杠來(lái)添加到文本字符串中:
代碼 | 輸出 |
---|---|
\' | 單引號(hào) |
\" | 雙引號(hào) |
\& | 和號(hào) |
\\ | 反斜杠 |
\n | 換行符 |
\r | 回車(chē)符 |
\t | 制表符 |
\b | 退格符 |
\f | 換頁(yè)符 |
背景:
今天在做一個(gè)任務(wù)時(shí),用jquery的ajax傳遞一長(zhǎng)串字符時(shí),在后臺(tái)地驗(yàn)證一直不成功,糾結(jié)時(shí)我了(那個(gè)字符串是隨機(jī)生成地,特長(zhǎng)).查了一上午,原來(lái)是我生成地字符串中有+號(hào),而在js傳遞地時(shí)候,會(huì)理解為是連接字符用地,到了后臺(tái)就將+號(hào)自動(dòng)變?yōu)榭崭窳耍院笈_(tái)地字符串和前臺(tái)生成地已經(jīng)不一樣了.
原因:
js后自動(dòng)解析特殊字符,如+號(hào)為連接符,解析為空格,&為變量連接符,服務(wù)器端接受數(shù)據(jù)時(shí)&以后地?cái)?shù)據(jù)不顯示等等.
解決辦法:
1、將字符放到form中,然后用js提交form表單到服務(wù)器.
2、將字符中地特殊字符替換成十六進(jìn)制地字符,一些特殊字符與十六進(jìn)制地對(duì)應(yīng)關(guān)系:
+ | 空格 | / | ? | % | & | = | # |
%2b | %20 | %2f | %3f | %25 | %26 | &3d | %23 |
str = str.replace(/\+/g,%2b); 將+號(hào)替換為十六進(jìn)制
3、最簡(jiǎn)單地一種,使用encodeuricomponent()函數(shù).
該方法不會(huì)對(duì) ascii 字母和數(shù)字進(jìn)行編碼,也不會(huì)對(duì)這些 ascii 標(biāo)點(diǎn)符號(hào)進(jìn)行編碼: - _ . ! ~ * ' ( ) .
其他字符(比如 :;/?:@&=+$,# 這些用于分隔 uri 組件地標(biāo)點(diǎn)符號(hào)),都是由一個(gè)或多個(gè)十六進(jìn)制地轉(zhuǎn)義序列替換地.
jQuery ajax特殊字符參數(shù)
在做ajax登錄時(shí)候遇到的一個(gè)問(wèn)題,當(dāng)傳入?yún)?shù)含有特殊字符,比如:“$'#@”等。參數(shù)傳遞會(huì)有問(wèn)題,無(wú)法正確獲取。
$.ajax({ url: '/user/login.ydd', type:'post', data:'name=abce&password=abcd&pwd', success: function(data){ } })
我要傳入的是用戶名為:abc,密碼為abcd&pwd的用戶登錄。但傳入后臺(tái)獲取參數(shù),會(huì)被password=abcd當(dāng)作一個(gè)參數(shù)傳遞,&這個(gè)特殊將pwd分開(kāi)了作為另一個(gè)參數(shù)解析了。
解決方法,這時(shí)候就需要ajax另外一種傳遞參數(shù)的方式
$.ajax({ url: '/user/login.ydd', type:'post', data:{'name':'abce','password':'abcd&pwd'}, success: function(data){ } })
相關(guān)文章
JavaScript語(yǔ)句可以不以;結(jié)尾的煩惱
JavaScript語(yǔ)句可以不以;結(jié)尾的煩惱...2007-03-03詳解webpack引入第三方庫(kù)的方式以及注意事項(xiàng)
這篇文章主要介紹了詳解webpack引入第三方庫(kù)的方式以及注意事項(xiàng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01用Javascript實(shí)現(xiàn)UTF8編碼轉(zhuǎn)換成gb2312編碼
這篇文章主要介紹了用Javascript實(shí)現(xiàn)UTF8編碼轉(zhuǎn)換成gb2312編碼2006-12-12JS實(shí)現(xiàn)TITLE懸停長(zhǎng)久顯示效果完整示例
這篇文章主要介紹了JS實(shí)現(xiàn)TITLE懸停長(zhǎng)久顯示效果,結(jié)合完整實(shí)例形式分析了JavaScript鼠標(biāo)事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-02-02js自動(dòng)查找select下拉的菜單并選擇(示例代碼)
這篇文章主要介紹了js自動(dòng)查找select下拉的菜單并選擇(示例代碼)需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02JS鼠標(biāo)3次點(diǎn)擊事件實(shí)現(xiàn)代碼及擴(kuò)展思路
這篇文章主要介紹了JS鼠標(biāo)3次點(diǎn)擊事件實(shí)現(xiàn)及擴(kuò)展思路,需要的朋友可以參考下2017-09-09