繁体   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