簡體   English   中英

在文本字段中轉義雙引號

[英]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},...]);

小提琴 http://jsfiddle.net/LvGLe/

我遇到了這個問題,嘗試在服務器端進行反序列化時遇到異常,我通過兩次轉義來解決了該問題(“如果該術語存在LoL”),請檢查以下功能:

function customEscape(str) {
    return encodeURIComponent( str.replace('\"', '\\\"') );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM