javascript - 将数组从 pug (jade) 传递到 jquery 脚本

标签 javascript jquery express pug

我有一个包含字符串列表的数组 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/

相关文章:

javascript - 无法在我的客户表单中选择一个值并将其标记为在 Silvio Moreto 的 selectpicker 中选择

json - TypeError : JSON. stringify(...).then 不是函数 - React JS

javascript - 快速 session 不持久

javascript - 用于强调 Markdown 的正则表达式

javascript - 如何使用 JQuery 将链接转换为文本?

Javascript 按数字排序而不是按字母顺序排序

node.js - 如何提高以编程方式发送图像的速度

Javascript 鼠标悬停/鼠标移出动画按钮

javascript - "this"指 "window"对象未按预期工作

javascript - gmail如何实现 'add link to mail'功能?