【发布时间】:2017-04-06 11:33:32
【问题描述】:
我正在制作一个非常小的网站,其中将根据下拉选择显示数据库信息。 假设我的数据库包含 2 个表,第一个表是带有 ID 和名称的公司。另一个员工与这些公司“联系”。例如:
╔═════════════╦════════════╗
║ company_ID ║ company ║
╠═════════════╬════════════╣
║ 1 ║ Google ║
║ 2 ║ H&M ║
║ 3 ║ IKEA ║
╚═════════════╩════════════╝
╔═════════════╦═════════════════╗
║ company_ID ║ employee ║
╠═════════════╬═════════════════╣
║ 1 ║ Google_emp1 ║
║ 1 ║ Google_emp2 ║
║ 2 ║ H&M_emp1 ║
║ 1 ║ Google_emp3 ║
║ 3 ║ IKEA_emp1 ║
║ 3 ║ IKEA_emp2 ║
║ 2 ║ H&M_emp2 ║
╚═════════════╩═════════════════╝
当在下拉列表中选择“Google”时,company_ID 为 1 的所有员工都应该显示在第二个下拉列表中(因为在这种情况下 Google 的 ID 为 1)。
问题:
我需要将我的 Flask 变量传递给 .js 文件以填充下拉列表。
目前python文件的重要部分如下所示:
def database():
c, conn = connectionDB()
compDB = c.execute("SELECT * FROM Companies")
compDB = c.fetchall()
empDB = c.execute("SELECT * FROM Employees")
empDB = c.fetchall()
return render_template("database.html",
compDB = compDB,
empDB = empDB,
HEADERTEXT_LIST = HEADERTEXT_LIST)
我的 .html 文件的重要部分如下所示:
<select class="chzn-select" id="company" data-placeholder="Choose company" name="company">
<option value=""></option>
<!--Here is the appending supposed to start-->
</select>
<select class="chzn-select" id="employee" data-placeholder="Choose employee" name="employee">
<option value=""></option>
<!--Here is the appending (depending on company) supposed to start-->
</select>
(我其实有好几层,但原理是一样的)
我的 .js 文件看起来像这样(我使用选择作为样式):
$(function () {
$('.chzn-select').chosen({
no_results_text: "No results for: ",
search_contains: true,
single_backstroke_delete: false,
disable_search: false,
width: "200px",
});
$('#company').append($('<option value=""></option>'));
$('#company').trigger("chosen:updated");
});
我的数据库信息应该这样输入:
<option value="company_id">company</option>
问题 1:
如何从 .py 文件传递这些变量,以便它们可以被 .js 文件操作?
我的意思是,我可以使用 Flask-logic,但这只能在我的 .html 文件中进行解释。
问题 2:
填充这些的最聪明的方法是什么?某种for循环?我对 javascript 完全陌生,很抱歉可能会问一些显而易见的问题。
谢谢!
【问题讨论】:
标签: jquery mysql dynamic flask dropdown