簡體   English   中英

JSON.parse()和$ .parseJSON()中的“未捕獲的SyntaxError:意外的令牌?”

[英]“Uncaught SyntaxError: Unexpected token ?” in both JSON.parse() and $.parseJSON()

我不知道為什么要得到這個,我花了整整一天的時間試圖弄亂代碼。 現在,我能得到的最簡單的方法是(嘗試使用來自數據庫的轉義字符串構建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窗口中添加標簽。

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

這里有兩種unescape,所以在?之前需要額外的\\ ?

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>"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM