在文本字段中转义双引号

时间:2013-06-20 16:41:05

标签: javascript jquery html jsp

我有一个填充了几个textareas的Jsp页面和一个执行ajax GET请求的提交按钮。用户可以输入任何文本。当用户输入双引号字符串或包含反斜杠的字符串时,我遇到问题。我目前正在按顺序使用encodeURIComponent和JSON.stringify来准备get请求url参数。这是正确的方法吗?后端代码接收不正确的Json对象。这是一个样本

用户类型: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"},...]"我完全不知道为什么会发生这种情况。

3 个答案:

答案 0 :(得分:2)

  

我目前正在使用encodeURIComponent和JSON.stringify

那是你的问题 您只应在实际构建该格式的字符串时转义。

由于您没有将值连接到URL,因此不应该调用encodeURIComponent

如果您将JSON概念化为URL,则需要在生成的JSON字符串上调用encodeURIComponent,但不能更早。

总结

逃生方法并不是让您的代码有效的神奇方法。

您需要在正确的时间应用正确的转义。

答案 1 :(得分:1)

试试这个,

var txtData0 = $('#txtArea0').val();
var txtData1 = $('#txtArea1').val();
var msg = JSON.stringify([{ "id": 0, "txtData" : txtData0},...]);

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

答案 2 :(得分:0)

我遇到了这个问题,当我在服务器端进行反序列化时遇到异常,我通过双重转义修复了这个问题(“如果该术语存在LoL”),请检查下面的函数:

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