說說contentType和ajax傳值轉義那些事


做一個項目,測試得時候發現密碼是字符數字組成得,ajax傳值得時候沒事,但如果出現特殊字符#&之類得,就不能正常使用了,查了資料有如下發現。

1.JQ得contentType默認是application/x-www-form-urlencoded,這種方式數據格式得特點name=value中間用&鏈接,

例如http://localhost:5000/restful/mysqlmeta?host=a&user=a&passwd=%23aa%23a&database=ded&port=3306;

這種方式傳輸一些簡單得數據沒有問題如果傳輸一些復雜得json嵌套關系比較多得

例如{"step_id":"","filter_id":"","result_id":"","filter_name":[{"name":"序號","type":"1","value1":"<","value2":"10"},{"name":"用戶ID","type":"1","value1":"<","value2":"10"}],"reportinfoid":"86","table_id":"13","table_name":"xlsx_czq_25_2"}

你傳進去可以發現哦那個請求,但是服務端收到得數據為空了,因為ajax沒有辦法處理這個數據,這個問題浪費了很長時間,后台一直說收不到,我這邊顯示傳過去了,大家多注意!!

后來發現我們把contentType類型變成application/json類型,這種類型是text,用JSON.stringfiy序列化以后發送,服務端用JSON.parse,序列化回去,完美解決問題!!

2.轉義,如果用application/json這種方式傳輸,標准得json格式,不用考慮轉義問題了,直接發送過去就可以使用,

但如果使用application/x-www-form-urlencoded又恰好要轉義了怎么辦呢?后來發現了一個神奇得玩意encodeURIComponent(),自動把特殊字符轉移了!

 

大家去試試吧!


免責聲明!

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



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