相关疑难解决方法(0)

python - 在 javascript Flask 中传递字典列表

我知道如何将一个变量从 Flask (python) 传递给我的模板 html 文件{{data}}。但是,我无法在 javascript 中访问列表中的每个字典元素及其各自的键值对。

启动文件

def func1():
        data = filter() #returns a list of dictionaries

    return render_template("template1.html", data=data)
Run Code Online (Sandbox Code Playgroud)

模板1.html

<html>
  <head>
  .....
  </head>
  <body>
    <p>This is html: {{data}}</p>

    <script type="text/javascript" src="{{url_for('static', filename='js/add.js') }}"></script>
    <script type="text/javascript">
    myvar = '{{data}}';
    document.write(myvar);

    </script>
  </body>

</html>
Run Code Online (Sandbox Code Playgroud)

添加.js

//code to be written here
Run Code Online (Sandbox Code Playgroud)

myvar并且This is html:都输出整个字典列表。我已经尝试过,myvar[0][出于某种原因只是输出。我也做过:

myvar = '{{data|tojson}}';
var parsed = JSON.parse(myvar);
document.write(parsed[0]);
Run Code Online (Sandbox Code Playgroud)

但输出[object Object].

javascript python dictionary flask

4
推荐指数
1
解决办法
7579
查看次数

JavaScript使用Jinja模板中呈现的数据引发SyntaxError

我试图将数据作为JSON从Flask路由传递到Jinja模板呈现JavaScript.我想使用JavaScript迭代数据.浏览器显示SyntaxError: Unexpected token '&'. Expected a property name.何时JSON.parse对渲染数据进行调用.如何在JavaScript中使用渲染的JSON数据?

var obj = JSON.parse({{ data }})
for (i in obj){
   document.write(obj[i].text + "<br />");
}
Run Code Online (Sandbox Code Playgroud)
def get_nodes(node):
    d = {}
    if node == "Root":
        d["text"] = node
    else:
        d["text"] = node.name

    getchildren = get_children(node)
    if getchildren:
        d["nodes"] = [get_nodes(child) for child in getchildren]
    return d

tree = get_nodes("Root")
return render_template("folder.html", data=tree)
Run Code Online (Sandbox Code Playgroud)

如果我只是放入{{ data }}HTML部分,我看到的看起来是正确的.

{'text': 'Root', 'nodes': [{'text': u'Prosjekt3'}, {'text': u'Prosjekt4', 'nodes': [{'text': u'mappe8'}]}]}
Run Code Online (Sandbox Code Playgroud)

javascript python flask

3
推荐指数
1
解决办法
3366
查看次数

标签 统计

flask ×2

javascript ×2

python ×2

dictionary ×1