使用AJAX和Flask在POST请求后阻止GET请求?

时间:2018-05-10 05:13:53

标签: jquery ajax post flask get

我正在使用AJAX和Flask来允许通过web-app更改pandas数据框中的列名。

除了崩溃之外它有效。它似乎使用POST将新列名称发送到服务器,然后将更新的数据帧发送回客户端。

但是它似乎发送了一个不允许的GET请求,因此崩溃了。您可以看到初始POST请求(200)和以下GET请求(405):

127.0.0.1 - - [09/May/2018 18:19:23] "POST /process HTTP/1.1" 200 -

127.0.0.1 - - [09/May/2018 18:19:23] "GET /process?eq_site_limit=1&hu_site_limit=2&fl_site_limit=3&fr_site_limit=7 HTTP/1.1" 405 -

我可以使用 返回flask.render_template 来返回一个html页面,但之后我会刷新网页而我正在尝试这样做而不这样做

为什么要解雇GET请求以及如何防止它?

这是烧瓶应用程序:

@app.route('/process', methods=['POST'])
def process():
    df = pd.read_csv('../data/df_reduced_cols.csv')
    existing_cols = list(df.columns)
    form_results = request.form
    for k, v in form_results.items():
        df.rename(columns={k: v}, inplace=True)
    new_columns = list(df.columns)
    new_head = print_head(df)

    return jsonify(new_head = new_head)

这是AJAX:

<script>
    $(document).ready(function(){
        $("button").click(function(){
            var dataResults = $("form").serializeArray();
            $.ajax({
                data: dataResults,
                type : 'POST',
                url : '/process'
            })
        });
    });
</script>

这是HTML:

<form action="/process">
   <table class="table table-hover">
   <thead>
      <tr>
         <th scope="col">Old Name</th>
         <th scope="col">New Name</th>
      </tr>
   </thead>
   <tbody>
      {% for col in columns %}
      <tr>
         <td>{{col}}</td>
         <td>
            <input type="text" name="{{col}}" placeholder="New Column Name">
         </td>
      </tr>
      {% endfor %}
      <button type="submit" class="btn btn-primary" >Submit Here</button>
</form>
<h1><small>{{new_head}}</small></h1>

感谢您的任何指示!

0 个答案:

没有答案