我正在制作一个非常小的网站,根据下拉选择显示数据库信息。 可以说我的数据库包含2个表,第一个与公司有一个ID和一个名字。另一个员工与这些公司“联系在一起”。 E.G:使用来自MySQL数据库的数据使用Flask和jQuery填充下拉列表
╔═════════════╦════════════╗
║ 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 ║
╚═════════════╩═════════════════╝
当一个人选择“谷歌”在下拉菜单中以1 COMPANY_ID所有的员工应该在第二个下拉显示出来(因为谷歌的ID在这种情况下为1)。
问题:
我需要将我的Flask变量传递给.js文件来填充下拉列表。
目前蟒蛇文件的重要组成部分,是这样的:
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-loop?我对javascript完全陌生,很抱歉可能会问这个问题。
谢谢!
感谢您的答案:)我有我的数据库中的很多图层,仍然在格式化查询结果虽然.. – Louise