未捕获的SyntaxError:意外的令牌&将列表/数组传递给Javascript时

时间:2018-05-25 14:14:21

标签: javascript python flask jinja2

我是JavaScript新手。我使用的是Flask和Python,Flask模板使用Jinja模板库来渲染模板。我通过API调用得到了我的数组。 我的数组看起来像这样:

    array = [{
        country: 'Macediona', 
        city: ['Skopje','Ohrid', 'Bitola']
        }, {
        country: 'Switzerland', 
        city: ['Bazel', 'Zurich', 'Zeneva']
        }, {
        country: 'Srbia', 
        city: ['Nis', 'Belgrad']
        }];

我可以使用{{array}}在HTML模板中传递此数组,我也可以根据Flask文档在Javascript中执行相同操作。

但是当我用Javascript做的时候:

var list = {{ array }}

我有错误:未捕获的SyntaxError:意外的令牌&amp ;. 从控制台调试我看到列表与其他"事物"在键和值之前和之后。

    array = [{
        'country': ''Macediona'', 
        ....

如何在Javascript中获得干净的数组?

2 个答案:

答案 0 :(得分:1)

出于安全原因,Jinja正在逃避代码中的html ''

的html代码

有关jinja的html转义的信息,请点击此处: http://jinja.pocoo.org/docs/2.10/templates/#html-escaping

  

启用自动转义后,默认情况下会转义所有内容,但明确标记为安全的值除外。

因此,为了防止Jinja逃脱您的代码,您可以使用Jinja的内置过滤器 http://jinja.pocoo.org/docs/2.10/templates/#safe
要将代码标记为安全,请使用safe过滤器。

var list = {{ array | safe }}

答案 1 :(得分:0)

解码字符串

function decodeHtml(html) {
return $('<div>').html(html).text();

}

decodeHtml(&#34; [{&amp;#3 9; country&#39;:&#39;&amp;#3 9; Macediona&amp;#3 9;&#39;}]&#34;)将给

    "[{'country': ''Macediona''}]"