如何在Flask Python中获取drop box的值

时间:2017-03-04 15:04:16

标签: python html json flask

我有一个XML文件。它紧随其后。我使用Flask Framework Python在搜索栏中获取查询以及当前dropbox的值(例如英语或越南语)。我用" POST"我输入或点击"搜索"按钮。但是dropbox的值为null。

 <form class="input-group">

                 <div class="input-group-btn search-panel" id="menu1">
                        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                            <span>Language</span>
                        </button>
                        <ul name ="btnLanguage" class="dropdown-menu" role="menu">
                            <li><a>English</a></li>
                            <li><a>Vietnamese</a></li>
                        </ul>
                 </div>

                <input type="text" class="form-control" name="query" id ="query" placeholder="Search sentence...">
                <span class="input-group-btn">
                    <button id ="btnSearch" class="btn btn-success" type="submit">
                        <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
                    </button>
                </span>
            </form>

你怎么能帮助我。谢谢

 @app.route("/search" , methods=["POST"])
 def search():
    print("True")
    # read the posted values from the UI
    _query = request.form['query']
    print(_query)
    _language = request.value['btnLanguage']
    print(_language)

和Json方法:

$(function(){
$('#btnSearch').click(function(){
    $.ajax({
        url: '/search',
        data: $('form').serialize(),
        type: 'POST',
        success: function(response){
            console.log(response);
        },
        error: function(error){
            console.log(error);
        }
    });
});

});

1 个答案:

答案 0 :(得分:0)

这是因为ul-li不是常规表单控件(在html中查看此link以获取可用的表单控件)。所以jquery在序列化表单数据时不会考虑它。

解决方案:您需要编写一个脚本来附加表单数据的自定义数据,或者您应该使用<select>而不是ul-li下拉列表。

<小时/>

您的代码存在其他问题。

  • 您正在使用带有提交类型的按钮的click()事件处理程序,因此将发生两个事件,一个是您正在调用的ajax,另一个是表单,将通过GET提交给服务器端。要删除问题,您应该在监听表单submit()事件并阻止事件传播(请查看此answer)。