ajax傳參里含有特殊字符的坑


問題場景:今天在測試自己手上的頁面功能時,發現一個小bug,在用ajax向后台發數據時,只要參數中出現一些特殊字符,控制台會報錯http 400的問題,其實就是特殊字符服務器不能解析。好了,問題是找到了,但是改如何解決勒!

首先想到的就是把特殊字符進行編碼在傳遞,但是自己寫檢測特殊字符函數代碼時發現,這要檢測的特殊字符數不勝數,完全正則不過來。
上網搜了一下,發現有一個現成的方法:encodeURIComponent();放在代碼上跑一下,任務解決了!哈哈。問題解決了,但是還是要看看其中的更深的原理!

特殊符號由前台傳入時如果沒有進行轉碼處理的,是這樣:my param is 7% and 6%7,異常顯示是[my para is 7is%207%%20and%206%7],所以就出錯了,

下面是一些常見字符列表

url特殊符號 在url中實際含義 轉碼后的十六進制表示

符號 含義 編碼
+ +號表示空格 %2B
空格 用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的 URL 和參數 %3F
% 指定特殊字符 %25
# 表示書簽 %23
& 參數間的分隔符 %26
= URL 中指定參數的值 %3D

 

 

 

 

 

 

 


解決方案其實都是類似的,這個看自己的習慣。

方案一:var str= para.replace(/%/g,"%25");//g代表全局匹配替換
方案二:encodeURIComponent(str); //使用改方法自動轉碼。

存疑問方案:網上有說用json格式的參數就能解決,但是自己本身就是用的json格式的,但是出現這類問題!所以存疑問!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM