js中傳遞特殊字符(+,&)的方法
背景:
今天在做一個任務(wù)時,用Jquery的Ajax傳遞一長串字符時,在后臺的驗證一直不成功,糾結(jié)時我了(那個字符串是隨機生成的,特長)。查了一上午,原來是我生成的字符串中有+號,而在js傳遞的時候,會理解為是連接字符用的,到了后臺就將+號自動變?yōu)榭崭窳?,所以后臺的字符串和前臺生成的已經(jīng)不一樣了。
原因:
js后自動解析特殊字符,如+號為連接符,解析為空格,&為變量連接符,服務(wù)器端接受數(shù)據(jù)時&以后的數(shù)據(jù)不顯示等等。
解決辦法:
1、將字符放到form中,然后用js提交form表單到服務(wù)器。
2、將字符中的特殊字符替換成十六進(jìn)制的字符,一些特殊字符與十六進(jìn)制的對應(yīng)關(guān)系:
| + | 空格 | / | ? | % | & | = | # |
| %2B | %20 | %2F | %3F | %25 | %26 | &3D | %23 |
str = str.replace(/\+/g,"%2B"); 將+號替換為十六進(jìn)制
3、最簡單的一種,使用encodeURIComponent()函數(shù)?! ?/P>
該方法不會對 ASCII 字母和數(shù)字進(jìn)行編碼,也不會對這些 ASCII 標(biāo)點符號進(jìn)行編碼: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 這些用于分隔 URI 組件的標(biāo)點符號),都是由一個或多個十六進(jìn)制的轉(zhuǎn)義序列替換的。
相關(guān)文章
EasyUi中的Combogrid 實現(xiàn)分頁和動態(tài)搜索遠(yuǎn)程數(shù)據(jù)
jquery easyui中的combogrid比較特殊,算是combo和grid的組合,combogrid結(jié)合一個可編輯的文本框和下拉數(shù)據(jù)網(wǎng)格面板,可以讓用戶迅速找到并選擇,又可以進(jìn)行搜索,展示與當(dāng)前輸入的字符相匹配的數(shù)據(jù)。下面給大家介紹EasyUi中的Combogrid 實現(xiàn)分頁和動態(tài)搜索遠(yuǎn)程數(shù)據(jù)2016-04-04
JavaScript中所有聲明變量的方式及特性總結(jié)
在JavaScript中,變量的定義是編程的基礎(chǔ),而JavaScript提供了多種靈活的方式來定義變量,本文將詳細(xì)盤點JavaScript中所有變量定義的方式,并結(jié)合代碼示例進(jìn)行說明,需要的朋友可以參考下2025-01-01
JS實現(xiàn)靜態(tài)頁面搜索并高亮顯示功能完整示例
這篇文章主要介紹了JS實現(xiàn)靜態(tài)頁面搜索并高亮顯示功能,涉及javascript事件響應(yīng)、字符遍歷替換及頁面元素屬性動態(tài)變換等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

