将Flask中的字符串列表传递给javascript会将列表的第一部分作为字符串返回

时间:2019-09-18 15:33:53

标签: javascript json flask

我有一个从Flask应用发送的字符串arr=['a', 'b', 'c']的列表。我像arr={{arr|tojson}}一样将其传递给我的静态js脚本,然后使用JSON.parse(arr)

我看到的所有解决方案似乎都可以在localhost上运行,但是当我通过nginx后面的wsgi容器为我的应用程序提供服务时,我的js文件将其解释为arr="['a',"'b','c']。有时,我JSON.parse()会收到一个unexpected end of JSON input错误,因为js文件只收到"['a',"。其他时间,当我使用unexpected token \ at line 1时会得到arr={{arr|tojson|safe}}

我尝试通过app.py json.dumps()从我的map(json.dumps,arr)发送arr。我已经尝试过{arr|tojson}}{arr|tojson|safe}}。我试过在有和没有JSON.parse()的情况下,从我的js文件中读取arr,但对于所有尝试都没有骰子。

我的app.py

arr = ['a', 'b', 'c']
@app.route('/')
def index():
    return render_template('index.html',arr=arr)

我的index.html

<script id="params" type="text/javascript" arr={{arr|tojson}} src="{{url_for('static',filename='app.js')}}"></script>

我的app.js

$(document).ready(function() {
    var src = $('#params');
    arr = JSON.parse(src.attr('arr'));
});

1 个答案:

答案 0 :(得分:0)

我的app.py

arr = ['a', 'b', 'c']
@app.route('/')
def index():
    return render_template('index.html',arr=arr)

我的index.html

<script id="params" type="text/javascript" arr={{','.join(arr)}} src="{{url_for('static',filename='app.js')}}"></script>

我的app.js

$(document).ready(function() {
    var src = $('#params');
    arr = src.attr('arr').split(',');
});