我知道如何将一个变量从 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].
我试图将数据作为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)