javascript - 使用 JQuery 和 Flask 的动态下拉不起作用

标签 javascript jquery python ajax flask

您好,我正在使用 Flask 编写一个小应用程序。我必须根据数据库的输出更新下拉菜单。我无法动态添加选项。

Javascript 代码:

<script type="text/javascript">
   function filldata(){
      var sample = document.getElementById("filter-select").value;
      jQuery.support.cors = true;
      $.post("/test",{"filter_type":sample},function(data,status){
          var tmp = data.output;
          alert(tmp.length);
          var sel = document.getElementById('further-select');
          for(var i =0;i<tmp.length;i++){
             console.log(tmp[i]);
             alert("<option>"+tmp[i]+"</option>");
             var opt = document.createElement('option');
             opt.innerHTML = tmp[i];
             opt.value = tmp[i];
             sel.appendChild(opt);
           }
      });
   }
</script>

服务器代码:

@app.route('/test',methods=['POST'])
def test():
    tmp = request.form.get('filter_type')
    con = mdb.connect('localhost', 'root', 'root', 'sample')
    cur = con.cursor()
    cur.execute("SELECT DISTINCT "+tmp+" FROM logdata")
    res = cur.fetchall()
    con.close()
    return jsonify(output=res)

我可以知道我哪里出错了吗?谢谢。

编辑:

我已经包含了 HTML 代码。

HTML:

<div class="collapse navbar-collapse navbar-ex1-collapse">
                <ul class="nav navbar-nav side-nav">
                    <li>
                        <a href="javascript:;" data-toggle="collapse" data-target="#ts"><i class="fa fa-fw fa-dashboard"></i> Time Period <i class="fa fa-fw fa-caret-down"></i></a>
                        <ul id="ts" class="collapse">
                            <select id="time-stamp">
                                <option value="Till now">Till Now</option>
                                <option value="Yesterday">Yesterday</option>
                                <option value="Last Week">Last Week</option>
                                <option value="Last Month">Last Month</option>
                                <option value="Last 6 months">Last 6 months</option>
                                <option value="Customize">Customize</option>
                            </select>
                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;" data-toggle="collapse" data-target="#ns"><i class="fa fa-fw fa-arrows-v"></i> Select Nodes <i class="fa fa-fw fa-caret-down"></i></a>
                        <ul id="ns" class="collapse">
                            <select id="nodes-select" multiple="multiple">
                                <option value="Till now">Till Now</option>
                                <option value="Yesterday">Yesterday</option>
                                <option value="Last Week">Last Week</option>
                                <option value="Last Month">Last Month</option>
                                <option value="Last 6 months">Last 6 months</option>
                                <option value="Customize">Customize</option>
                            </select>
                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;" data-toggle="collapse" data-target="#fs"><i class="fa fa-fw fa-arrows-v"></i> Select Filter <i class="fa fa-fw fa-caret-down"></i></a>
                        <ul id="fs" class="collapse">
                            <select id="filter-select" onchange="filldata()">
                                <option value="mac">MAC</option>
                                <option value="sublbl">SUBLBL</option>
                                <option value="vrf">VRF</option>
                                <option value="ifhndl">IFHNDL</option>
                                <option value="compid">COMP_ID</option>
                                <option value="v4addr">V4_ADDR</option>
                                <option value="v6addr">V6_ADDR</option>
                            </select>
                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;" data-toggle="collapse" data-target="#ff"><i class="fa fa-fw fa-arrows-v"></i> Select items <i class="fa fa-fw fa-caret-down"></i></a>
                        <ul id="ff" class="collapse">
                            <select id="further-select" multiple="multiple" >

                            </select>

                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;" data-toggle="collapse" data-target="#cs"><i class="fa fa-fw fa-bar-chart-o"></i> Charts <i class="fa fa-fw fa-caret-down"></i></a>
                        <ul id="cs" class="collapse">
                            <select id="chart-select">
                                <option value="error_info">Error Info</option>
                                <option value="session_history">Session History</option>

                            </select>
                        </ul>
                    </li>

                </ul>
            </div>

最佳答案

您编写了一个 Javascript 函数,但从未调用过它。您应该将代码放在某种 $document.ready() 中。

关于javascript - 使用 JQuery 和 Flask 的动态下拉不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083597/

相关文章:

javascript - 如何通过第二次单击取消选中单选按钮

javascript - 语义 ui 如何使用 javascript 启用或禁用下拉菜单

javascript - 为什么此正则表达式 "^(0[1-9]|1[0-9]|2[0-9]|3[01])/(0[1-9]|1[012])/(19[0-9]{2}|20[0-1][0-7])$"对于 16/06/2008、21/02/2008 等日期会失败......?

jquery - 使用类将 vclick 绑定(bind)到 url

python - 如何检查两个变量是否在 Python 中引用同一个对象?

javascript - 铯 : display/hide Labels depending on the Zoom level

javascript - jquery获取xml属性值,用\\转义不起作用

python - 云 Composer Airflow 引发错误 : Broken DAG: cannot import name '_parse_data' when importing new dag

python - Awk 比较 3 个值,第一个文件值之间的第二个文件值,两个文件之间的多列打印输出到第三个

jquery - 在 Bootstrap 选项卡之间切换时保持滚动位置