电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

AJAX POST數據中有特殊符號(轉義字符)導致數據丟失的解決方法

瀏覽:8日期:2022-06-14 13:34:01

使用Ajax傳送數據時,當數據中存在加號(+)、連接符(&)或者百分號(%)時,服務器端接收數據時會丟失數據。分析Ajax傳送數據的格式與Javascript的語法:

1. "+"號:JavaScript解析為字符串連接符,所以服務器端接收數據時"+"會丟失變空格。

2. "&"號:JavaScript解析為變量連接符,所以服務器端接收數據時&符號以后的數據都會丟失變空格。

解決方法是通過正則表達式進行編碼替換(假設postStr是你想通過ajax傳送的數據字符串)

postStr = postStr.replace(/%/g, '%25'); postStr = postStr.replace(/\&/g, '%26'); postStr = postStr.replace(/\+/g, '%2B'); 下面是其它網友的補充

今天用ckEditor4編輯器時,把編輯器里面的內容通過Ajax傳到后端的時候,居然發現后端接收的數據不完整,以下我編輯器內容的源碼:

<p><img src='https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1483731740,4186543320&amp;fm=26&amp;gp=0.jpg'/></p>

結果“4186543320”后面的內容就一直沒有收到。

原因:

通過網絡查資料,得到的原因是分號”;”導致的問題。

ajax傳輸以“;”分割的字符串,卻發現后臺只會接受到第一個字符串。

例如:我向后臺傳輸

“小明;小紅;小白”

后臺只會接收到小明。

經過我的親自測試,發現:

1、Ajax傳的字符串數據,javascript用console.log可以完整的輸出來,只是后端接收不全,例如:

2、Ajax傳的字符串數據,我直接傳分號”;”+其它正常數據,后臺一樣是可以接收到的,一點問題都沒有。

根本原因是:

ajax請求內容中包含一些HTML轉義字符,例如:

&nbsp; &gt; &lt; &amp; &quot;

最主要的是這些轉義字符中含有&。

例如:

如果我發送“ blablabla&ltgrogrogro”,則服務器僅收到“ blablabla”。

&在URL參數中是什么意思?

我相信做過web程序開發的人都知道:&代表數據查詢字符串中的另一個變量,&以此格式表示新參數的開始。

最后去看了一下“ckEditor4編輯器”,無論是為空字符串還是回車,都會自動的幫你進行HTML轉義,哪怕你配置了“不轉義HTML”參數,也會自動幫你轉。

解決方法

知道了上面的原因,解決方法就容易大了,有程序經驗的人已經知道怎么做了?

原理就是:把HTML轉義字符解碼成標簽或者編碼再傳送數據。

以我這里用“ckEditor4編輯器”為例子,只需要修改config.js,增加如下配置參數:

config.basicEntities = false; config.htmlEncodeOutput = false;

以上這種也有一個弊端,如果你的編輯器里面有“代碼塊“功能,要插入一些代碼,例如:PHP、java、python、c++.......等等。代碼塊這里同樣也會自動進行HTML字符轉義。

最終的解決方法:

1、ajax請求傳字符串數據的時候,我們先做JavaScript URL編碼,例如:

var contents = encodeURIComponent(document.getElementById( 'editor1' ).value);

編碼函數:encodeURIComponent()

解碼函數:decodeURIComponent()

注意:用此編碼函數,Asp與PHP處理后端的時候不需要解碼,會自動的相互通訊,自動解碼。

編碼:encodeURI()

解碼:decodeURI()

注意:用此編碼函數,后端處理必須先解碼。

2、后端接收數據的時候,我們要做一個URL解碼,以PHP為例子,例如:

$contents = htmlentities(urldecode($_POST['contents']),ENT_QUOTES);

urldecode() — 解碼

urlencode() — 編碼

注意:為了安全起見,不管前端用哪個函數?只要是URL編碼過的,后端都需要解碼,好兼容。

其它解決方法:

Ajax請求傳數據類型,可以改為:json、text。具體請參考:HTTP Content-type 類型

總結:

這個問題其實解決方法真的是太多了,我只是講了最簡單也是最常見的幾種吧!

到此這篇關于AJAX POST數據中有特殊符號(轉義字符)導致數據丟失的解決方法的文章就介紹到這了,更多相關AJAX POST數據丟失內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Ajax
相關文章:
主站蜘蛛池模板: 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 环境模拟实验室_液体-气体控温机_气体控温箱_无锡双润冷却科技有限公司 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 超声骨密度仪-动脉硬化检测仪器-人体成分分析仪厂家/品牌/价格_南京科力悦 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 电竞馆加盟,沈阳网吧加盟费用选择嘉棋电竞_售后服务一体化 | 24位ADC|8位MCU-芯易德科技有限公司| 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 |