"未捕获的SyntaxError:意外的令牌?"在JSON.parse()和$ .parseJSON()中

时间:2014-05-23 05:32:58

标签: javascript jquery json

我不知道为什么我会这样做,而且我花了一天时间试图弄乱代码。现在我能得到的最简单的是(尝试使用来自数据库的转义字符串构建一个javascript数组):

vat test = '["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]';

到目前为止,非常好。

然后这会中断并返回错误:

JSON.parse(test);

为了给出一个想法,原来的2个数组项是:

<script>var bob = "This is ok"</script>
<script>search.replace(/!|\?)/g, "")</script>

在数据库中输入的任何类型的所有代码始终有效,但现在除外,因为我的CMS中用户输入的行中出现了该问号。如果我删除它或用其他任何东西替换问号,它就会起作用。

我无法更改正则表达式以使其以任何其他方式工作,我不是那个进入此的人。另外,这是整个脚本的简化版本,我只是将其缩小到问号。

如果问号对json有特殊意义,我也在线查看,没找到任何东西。

我希望我可以发送一个小提琴而不仅仅是代码,但是jsfiddle不允许我在javascript窗口中添加标记。

1 个答案:

答案 0 :(得分:0)

JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]')
SyntaxError: Unexpected token ?

此处有两个unescapes,因此您需要在\之前额外?

JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\\?)/g, \\"\\")</script>"]')
["<script>var bob = "This is ok"</script>", "<script>search.replace(/!|\?)/g, "")</script>"]