为什么我们需要在 eval JSON 中添加括号? [复制]

2023-11-21

为什么需要添加以下代码( and )用于评估?

var strJson = eval("(" + $("#status").val().replace(";","") + ")");

PS: $("#status").val()返回类似的东西{"10000048":"1","25000175":"2","25000268":"3"};


这取决于该元素中的值是什么(未知),将其包装在()是考虑可能的安全途径no输入在那里。

编辑:现在您已经清除了它的 JSON,这是无效的:

eval('{"10000048":"1","25000175":"2","25000268":"3"}');

但这将导致返回一个有效的对象:

eval('({"10000048":"1","25000175":"2","25000268":"3"})');
//effectively:
eval('return {"10000048":"1","25000175":"2","25000268":"3"};');

JavaScript 文件中的图片:

<script type="text/javascript">
  {"10000048":"1","25000175":"2","25000268":"3"}
</script>

这将会失败,它只是一个内联声明的对象,但语法不正确......与服务器的原因相同has支持 JSONP 才能正常工作。


与问题有点无关,但既然你包含了 jQuery,你不妨使用$.parseJSON()(这将使用本机JSON.parse()如果可用)为此:

var strJson = $.parseJSON($("#status").val().replace(";",""));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我们需要在 eval JSON 中添加括号? [复制] 的相关文章