[英]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.