基于javascript如何傳遞特殊字符
在沒步入正軌之前,先給大家介紹JavaScript 特殊字符
你可以在 JavaScript 中使用反斜杠來向文本字符串添加特殊字符。
插入特殊字符
反斜杠用來在文本字符串中插入省略號(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)來起始或者結(jié)束。這意味著上面的字符串將被截為:We are the so-called。
要解決這個(gè)問題,就必須把在 "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!
下面的表格列出了其余的特殊字符,這些特殊字符都可以使用反斜杠來添加到文本字符串中:
| 代碼 | 輸出 |
|---|---|
| \' | 單引號(hào) |
| \" | 雙引號(hào) |
| \& | 和號(hào) |
| \\ | 反斜杠 |
| \n | 換行符 |
| \r | 回車符 |
| \t | 制表符 |
| \b | 退格符 |
| \f | 換頁符 |
背景:
今天在做一個(gè)任務(wù)時(shí),用jquery的ajax傳遞一長(zhǎng)串字符時(shí),在后臺(tái)地驗(yàn)證一直不成功,糾結(jié)時(shí)我了(那個(gè)字符串是隨機(jī)生成地,特長(zhǎng)).查了一上午,原來是我生成地字符串中有+號(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è)問題,當(dāng)傳入?yún)?shù)含有特殊字符,比如:“$'#@”等。參數(shù)傳遞會(huì)有問題,無法正確獲取。
$.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分開了作為另一個(gè)參數(shù)解析了。
解決方法,這時(shí)候就需要ajax另外一種傳遞參數(shù)的方式
$.ajax({
url: '/user/login.ydd',
type:'post',
data:{'name':'abce','password':'abcd&pwd'},
success: function(data){
}
})
相關(guān)文章
Extjs表單輸入框異步校驗(yàn)的插件實(shí)現(xiàn)方法
這篇文章主要介紹了Extjs表單輸入框異步校驗(yàn)的插件實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié)
這篇文章主要介紹了javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié),包括JavaScript Math.random()內(nèi)置函數(shù) ,Js 隨機(jī)數(shù)產(chǎn)生6位數(shù)字的代碼,需要的朋友可以參考下2018-04-04
JavaScript數(shù)據(jù)類型及相互間的轉(zhuǎn)換規(guī)則
這篇文章主要介紹了JavaScript數(shù)據(jù)類型及相互間的轉(zhuǎn)換規(guī)則,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
uniapp?app?人臉識(shí)別的實(shí)現(xiàn)示例
本文主要介紹了uniapp?app?人臉識(shí)別的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
JavaScript中this的全面解析及常見實(shí)例
這篇文章主要給大家介紹了關(guān)于JavaScript中this的全面解析及常見實(shí)例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
JS實(shí)現(xiàn)服務(wù)五星好評(píng)
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)服務(wù)五星好評(píng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
詳解Webpack loader 之 file-loader
這篇文章主要介紹了詳解Webpack loader 之 file-loader,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
TypeScript聯(lián)合類型,交叉類型和類型保護(hù)
這篇文章主要介紹了TypeScript聯(lián)合類型,交叉類型和類型保護(hù),聯(lián)合類型就是定義一些類型,定義的變量只需要滿足任意一種類型即可,交叉類型就是需要滿足所有類型,交叉類型使用,更多內(nèi)容我們來看看下面文章詳細(xì)內(nèi)容吧2021-12-12
JavaScript遍歷求解數(shù)獨(dú)問題的主要思路小結(jié)
數(shù)獨(dú)游戲非常流行,其規(guī)則就是1到9數(shù)字填入9*9宮格并要求每一行、每一列、每一個(gè)粗線(小型)宮內(nèi)的數(shù)字不重復(fù),對(duì)此我們來看一下JavaScript遍歷求解數(shù)獨(dú)問題的主要思路小結(jié)2016-06-06
JavaScript設(shè)計(jì)模式之工廠模式和抽象工廠模式定義與用法分析
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之工廠模式和抽象工廠模式,結(jié)合實(shí)例形式分析了工廠模式的功能、定義、相關(guān)問題解決方法,并分析抽象工廠模式與工廠模式的不同之處,需要的朋友可以參考下2018-07-07

