[英]JSON parse gives error occasionally on parsing string
我有相同的输入字段,用户可以在其中输入一些数据。 接下来,我的代码将其转换为 JSON 并将其发送到服务器。
$("#submit").click(function(){
var inp = $("#inpTxt").val();
if(inp == null || inp == ""){
return;
}
jsonResult = JSON.parse('{"data": "' + inp + '"}');
$.ajax({
data : jsonResult,
...
});
});
这里的问题是有时上面的代码有效,有时却不起作用。 大多数时候,我测试了代码,它就像一个魅力,但在生产中,我不断收到多次报告的错误。
我还没有弄清楚可能的原因。
注意:代码的某些部分在上面没有共享,而只是问题的一部分。
由于我确定的问题,所以让我也在这里陈述一个答案。 您只需要在遇到的所有转义字符之前添加一个额外的 \\ ,例如:
\\b : 退格
\\f : 换页
\\n : 换行
\\r : 回车
\\t : 水平制表符
\\v : 垂直制表符 " : 双引号 \\ : 反斜杠
您可以通过以下代码执行此操作:
inp = inp.replace('"','\\\"');
或者inp.replace('\\','\\\\\\\\');
其他角色依此类推。
当您使用 JSON.Parse 函数时,您需要自己处理特殊字符。 因此,如果有人在您的 inpTxt 输入中放入 " ,则会导致解析该字符串时出错。
您应该执行类似以下代码的操作以避免解析错误并让 javascript 正确处理字符串中的特殊字符。
jsonResult = { data: inp };
我创建了一个 JS 小提琴以使其更容易理解。 https://jsfiddle.net/ub3w0a8x/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.