将一个数组从帕格(jade)传递给jquery脚本

时间:2017-10-12 11:33:25

标签: javascript jquery express pug

我有一个数组fields,其中包含一个字符串列表:

var fields = ['foo', 'bar', 'zed'];

我把它传递给像这样的快递哈巴狗:

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>

感谢

1 个答案:

答案 0 :(得分:5)

JSON-对它进行编码,将其放在某个属性中,就像<script>本身一样:

script(id='field-source', data-fields=JSON.stringify(fields)).
    $(document).ready(function () {
        var fields = JSON.parse($('#field-source').data('fields'));
    });

可以通过一些小心的转义¹直接将它放入脚本中(JSON编码是不够的!),但是当属性已经可靠地工作时,不值得努力。

¹您从JSON编码开始,然后通过将{+ 1}}替换为U + 2028和U + 2029,使其对JavaScript上下文安全,然后通过替换{{{ 1}}与\u202[89]。仅替换<是不够的,因为\x3c也可能以某些可以想象的方式解析。