【发布时间】:2018-03-27 06:02:24
【问题描述】:
我对此一无所知。任何有关这方面的帮助将不胜感激!
我有两个针对经理和员工的下拉菜单。
Managers 下拉菜单默认包含一个 Managers 列表。
我想通过使用用户在“经理”下拉列表中选择的经理名称查询 SQL Server 数据库来使用员工姓名填充“员工”下拉列表。
所以例如如果某人在“经理”下拉列表中选择 Tom 作为经理,则“员工”下拉列表应填充员工姓名,其中 Manager = Tom。
到目前为止,我有以下代码:
路由(我用来查询 SQL Server 数据库以根据经理姓名获取员工列表):
@app.route ('/getEmployees', methods=['GET'])
def getEmployees():
engine = create_engine('mssql+pyodbc://<server name>/<DB name>?driver=SQL+Server+Native+Client+11.0')
Base = declarative_base(engine)
class Bookmarks(Base):
__tablename__ = '<table name>'
Employee = Column(String(50))
__table_args__ = {'autoload': True}
def __repr__(self):
return '{} '.format(self.Employee)
def loadSession():
metadata = Base.metadata
Session = sessionmaker(bind=engine)
session = Session()
return session
if __name__ == "__main__":
session = loadSession()
return session.query(Bookmarks).filter_by(Manager='<I want to populate this with the manager name a user selects in the Manager dropdown>')
index.html 中的经理下拉菜单
<div class="form-group">
<select class="form-control" id="next" name="division" data-error="Required!" required>
<option value="default" disabled selected>Select something</option>
<option value="option1">Tom</option>
<option value="option2">Bob</option>
</select>
</div>
app.py 中的员工下拉列表
Employees = QuerySelectField('Employees', query_factory=getEmployees, allow_blank=True)
在 index.html 中
<div class="form-group" id="sel_user">
{{ render_field(form.Employees,class="form-control", required="required") }}
</div>
我正在使用带有 ajax 的 jQuery 来获取用户在管理器下拉列表中选择的管理器名称,然后对其进行处理..
$(document).ready(function(){
$("#next").change(function() {
var Manager=($('#next option:selected').text());
console.log(Manager);
$.ajax({
url: "/getEmployees",
type: 'GET',
contentType: 'application/json',
dataType: 'json',
// not sure what to do next..?
});
});
});
一旦我获得了用户在“经理”下拉菜单中选择的值,任何人都可以帮助我下一步应该做什么吗?
【问题讨论】:
-
请粘贴
/getEmployees呼叫的响应。我的意思是,您拨打电话时收到的代码示例。另一方面,您似乎没有为员工设置下拉列表,它显示type="text"(看起来像常规文本输入)。 -
@A.Iglesias 非常感谢!抱歉,我没有为路由 /getEmployees 定义任何模板。我的意思是,我不确定我们是否需要一个。现在,当我在函数 getEmployees() 的以下步骤中硬编码经理的姓名(Tom 或 Bob)时,我可以看到员工下拉列表中填充了员工列表。 return session.query(Bookmarks).filter_by(Manager='Tom') 我只是无法理解我们如何传递用户在 Managers 下拉菜单中选择的 Manager 名称并在上述步骤中传递该值所以我们可以看到该经理的员工姓名。
-
基本上,我不想硬编码经理的名字。我希望它根据 Manager 的下拉列表中选择的值动态更新返回 session.query(Bookmarks).filter_by(Manager='
') 再次感谢! -
我已经创建了一个详细的答案,试图向您解释主要思想。看看它,让我知道它是怎么回事。
标签: jquery python ajax flask flask-sqlalchemy