我有一个包含字符串列表的数组 fields
:
var fields = ['foo', 'bar', 'zed'];
我像这样从 express 把它传给哈巴狗:
app.get('/some_route', function(req, res) {
res.render('some_view', { fields: fields });
});
现在我想在 jquery 脚本中使用那个数组, 我已经尝试了:
<script>
$( document ).ready(function() {
var fields = #{fields};
// return: var fields = foo,bar,zed;
});
</script>
和:
<script>
$( document ).ready(function() {
var fields = JSON.parse(#{fields});
// return: var fields = JSON.parse(foo,bar,zed);
});
</script>
谢谢
最佳答案
JSON 编码并把它放在某处的属性中,比如 <script>
本身:
script(id='field-source', data-fields=JSON.stringify(fields)).
$(document).ready(function () {
var fields = JSON.parse($('#field-source').data('fields'));
});
可以通过一些小心的转义将其直接放入脚本中¹(JSON 编码是不够的!),但当属性已经如此可靠地工作时,不值得付出努力。
¹ 您从 JSON 编码开始,然后通过将 U+2028 和 U+2029 替换为 \u202[89]
使其对 JavaScript 上下文安全, 然后通过替换 <
使其对 HTML 上下文安全与 \x3c
.仅替换 </
还不够,因为 <!--
也可能会以某些可设计的方式扰乱解析。
关于javascript - 将数组从 pug (jade) 传递到 jquery 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708524/