亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

瀏覽:2日期: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
相關文章:
主站蜘蛛池模板: 国产成人精品999在线 | 美女大片高清特黄a大片 | 欧美成人全部免费观看1314色 | 新久草在线 | 香港三级欧美国产精品 | 欧美国产综合在线 | www.99色.com| 57pao国产成永久免费视频 | 人人九九 | 视频国产一区 | 亚洲成人免费在线观看 | 亚洲乱码视频在线观看 | 性生活免费大片 | 激情亚洲| 天天摸一摸视频寡妇 | 97久久天天综合色天天综合色hd | 亚洲国产视频网站 | 成人人观看的免费毛片 | 欧美精品一区二区在线观看播放 | 三级精品视频在线播放 | 欧美日韩视频在线观看高清免费网站 | 九九热视频这里只有精品 | 日本成本人啪啪黄3d动漫 | 欧美精品亚洲精品日韩 | 国产制服 国产制服一区二区 | 涩色婷婷狠狠第四四房社区奇米 | 国产欧美日韩在线人成aaaa | 国产一级片儿 | 国产午夜精品久久久久免费视 | 婷婷久久激情啪啪 | 国产精品一区二区在线播放 | 欧美黄区 | 中文精品久久久久国产网站 | 国产在线观看麻豆91精品免费 | 在线中文字幕日韩 | 免费一级毛片正在播放 | 国产成人 免费观看 | 国产一级高清视频 | 一区二区三区在线看 | 国产三级日本三级日产三 | 久热精品免费视频 |