2016-08-22 60 views
1

我这样做JSON字符串化问题与和的NodeJS EJS

var o = <%- JSON.stringify(object) %>; 
在代码

与下面的输出

var o = {"_id":"57bafa202acb57b8ab000013","status":"incomplete","title":"<script>alert(1);</script>","updated_at":"2016-08-22T18:42:00+05:30","id":"57bafa202acb57b8ab000013"}; 

和下面的错误。

Uncaught SyntaxError: Invalid or unexpected token 

有一个带 “<脚本>警报(1); < /脚本>” 标题属性中的对象。 我该如何处理?

+0

确实错误发生时?显然,如果你有这个输出,'JSON.stringify'不会失败。 – Guy

+0

它在这条线本身的失败。 JSON.stringify工作正常。 var o = <% - JSON.stringify(object)%>; – prcoder

回答

1

您需要使用Unicode转义更换<的,例如:

var o = <%- JSON.stringify(object).replace(/</g, '\\u003c') %>; 
+0

工作。你会建议除'<' and '>'之外的其他任何字符,应该使用unocode转义吗?此外如何工作,但上面的代码不。 'var a = {“title”:“”}; JSON.parse(JSON.stringify(a))' – prcoder

+0

'&'也是一个很好的候选人。主要问题是你将HTML和JS混合在一起,并且都有自己的一组特殊字符。对于HTML,' robertklep