[英]escaping double quotes in text field
我有一個Jsp頁面,其中填充了一些文本區域和一個提交按鈕,該按鈕執行ajax GET請求。 用戶可以輸入任何文本。 當用戶輸入雙引號字符串或包含反斜杠的字符串時,我遇到了問題。 我目前正在按順序使用encodeURIComponent和JSON.stringify來准備獲取請求的url參數。 那是正確的方法嗎? 后端代碼接收到不正確的Json對象。 這是一個樣本
用戶類型: Test "cases" are good
在txtArea0 Test "cases" are good
JS代碼:
var txtData0 = encodeURIComponent($('#txtArea0').val());
var txtData1 = encodeURIComponent($('#txtArea1').val());
var msg = JSON.stringify([{ "id": 0, "txtData" : txtData0},...]);
但是,我的服務器接收到的味精為"[{ "id": 0, "txtData" : "Test "cases" are good"},...]"
我完全不知道為什么會這樣。
我目前正在使用encodeURIComponent和JSON.stringify
那是你的問題。
僅當您實際上以該格式構建字符串時,才應轉義。
由於您沒有將值連接到URL中,因此不應調用encodeURIComponent
。
如果將濃縮的JSON放入URL,則需要在生成的JSON字符串上調用encodeURIComponent
,但不能更早。
綜上所述
您需要在正確的時間應用正確的轉義。
嘗試這個,
var txtData0 = $('#txtArea0').val();
var txtData1 = $('#txtArea1').val();
var msg = JSON.stringify([{ "id": 0, "txtData" : txtData0},...]);
我遇到了這個問題,嘗試在服務器端進行反序列化時遇到異常,我通過兩次轉義來解決了該問題(“如果該術語存在LoL”),請檢查以下功能:
function customEscape(str) {
return encodeURIComponent( str.replace('\"', '\\\"') );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.