首页 > 解决方案 > Jquery迭代flask sqlalchemy查询所有结果作为参数传递给html模板

问题描述

我正在尝试使用 jquery 来迭代我作为参数传递给模板的烧瓶 sqlalchemy query.all() 结果。我的数据库架构为:客户表:id,name,phone

db 中的客户是:

1 史密斯 1111111111

2琼斯2222222222

3 爱德华兹 3333333333

烧瓶视图:

@auth.route('/orders/add', methods=['GET', 'POST'])
@login_required
def order_add():
  custs = Customer.query.all()
  return render_template('auth/orders/order_add.html', custs=custs, form=form)

html代码:

<div class="form-group col-xs-12">
  <label class="control-label" for="cust_name">Company Name</label>
  <input class="form-control" id="cust_name" name="cust_name" type="text" list="customers" />
  <datalist id="customers">
  </datalist>
</div>

jQuery代码:

$('#cust_name').keyup(function() {
  var cust = "{{ custs }}"
  if ($(this).val() != '') {
    cust.each(function(i, name, pn) {
      alert(name);
      alert(pn);
    });
  }
});

我不知道如何像 FOR...EACH 在旧模板代码中那样迭代这些结果:

<datalist id="customers">
  {% FOR cust IN custs %}
    <option>{{ cust.name }}</option>
  {% ENDFOR %}
</datalist>

我努力了:

alert(cust.name); - didn't work
alert(cust[0]); - didn't work
alert({{ custs.name }}); - didn't work
alert("{{ cust.name }}"); - didn't work

甚至尝试过:

$('#comp_name').keyup(function() {
  var comp = '{{ comps }}';
  if ($(this).val() != '') {
    alert(comp.length);
  }
});

警报显示80,我仍然无法弄清楚那个!

如果您想知道我的最终目标是什么,一旦我让这段代码工作,我将创建一个文档片段并将 cust.name 添加到仅使用 jquery 的 datalist 选择中!

标签: jqueryhtmlflask

解决方案


我放弃了,设置了一个 Ajax 调用回 db。


推荐阅读