像这样在 HTML 中传输 JSON 是否会产生不良后果:
<div id="json" style="display: none;">{"foo": "bar"}</div>
假设 HTML 字符如在元素文本中<
被转义?<
JSON 可以被严格解析:
var blah = $.parseJSON($('#json').html())
例如,在 try/catch 语句中。基本原理是当脚本标签被剥离而不执行时,允许在 Ajax 的 HTML 响应中传递 JSON。一个例子是使用 jQuery .load()特殊选择器语法发出的 Ajax 请求:
$('#here').load('some.html #fragment')
...它抛弃了所有脚本标签,从而阻止了使用:
<script>var blah = {"foo":"bar"}</script>
我已经看到 JSON 在 HTML 属性中被传递,我猜这是等价的 - wrt 怪异、安全等 - 但由于所有额外的引号转义,可读性要差得多。