Python和Flask全新。尝试从数据库读取并将数据传递给Javascript。拉我的头发试图让它工作,因为我认为这是一个小的
在我的python脚本中,我有:
@app.route('/report')
def test():
db = get_db()
cur = db.execute('select * from emails where id=1')
emails = cur.fetchall()
print emails
return render_template('report.html', name=links, emails=emails)
然后在我的javascript中我有:
{% for entry in emails %}
var getEmail = {{entry.1}}
window.alert(getEmail);
emailArray.push(getEmail)
{% endfor %}
打印电子邮件正在输出[(1, u'e')]
,这是正确的,但window.alert
给了我“未定义”。如果我将其更改为var getEmail = {{entry.0}}
,它会从数据库中为我提供正确的ID值。谁能指出我哪里出错?
答案 0 :(得分:2)
您正在生成:
var getEmail = e;
由于e
未定义,因此无效。
你想引用你的变量;使用Flask附带的tojson
filter以及safe
(以防止引用生成的"
引号):
var getEmail = {{ entry.1|tojson|safe }};
将生成有效的JSON,这是Javascript的一个子集。现在您的行将显示为:
var getEmail = "e";
或者,一次性设置emailArray
列表(不需要emails
以上的循环):
var emailArray = {{ emails|map(attribute=1)|list|tojson|safe }};
将获取您的emails
列表,选择每个元组的第二个元素,并将结果列表输出为JSON列表,从而产生:
var emailArray = ["e"];