Ошибка Ajax в веб-приложении Flask

Я делаю небольшое приложение Flask. На данный момент одна из функций, которые я хочу реализовать, заключается в следующем:

  • загрузить файл Excel
  • сделать некоторую очистку данных с помощью pandas
  • показать результат dataframe на веб-странице с помощью AJAX, а также bootstrap-table

Я застрял. Вот мой код:

views.py

@app.route('/extract', methods=['GET', 'POST'])
def extract_excel():
  file = request.files['file']

  # SKIP: data extract and transform process, I get a valid dataframe

  df_json = df.to_json(orient="records", force_ascii=False)
  df_json = str(df_json)

  return df_json

index.html

<body> 
<div>
  <form action="/extract" method="post" enctype="multipart/form-data">
    <input type="file" name="file"></input>
    <input type="text" name="upload_date" placeholder="2018-01-01"></input>
    <button type="submit" id="showtable">preview</button>
  </form>
</div>   
</body>
<body>
<table data-toggle="table" id="WorkTable">
    <thead>
      <tr>
        <th>...</th>
        <th>...</th>
        <th>...</th>
        <th>...</th>                               
      </tr>
    </thead> 
</table> 
</body>

<script>
  $(document).ready(function() {
    $('#showtable').bind("click", function(){
        $.ajax({
            type: "POST",
            url: "/extract",           
            dataType: "json",
            success: function (msg) {
                $("#WorkTable").bootstrapTable('load', msg);
            },
            error: function () {
                alert("wrong");
            }
        });
      });
    });  
</script> 

Я предполагаю, что проблема связана с частью AJAX. Потому что я осмотрел консоль, нашел POST http://127.0.0.1:5000/extract 400 (BAD REQUEST) появился очень быстро. Я предполагаю, что это должно быть выполнено, когда файл загружен и возвращает ответ? Но я не знаю, как это исправить.

1 ответ

Решение

Как отмечается в комментариях Дэниэла Роузмана, необходимо отправить данные формы (через data атрибут в JQuery .ajax вызов). Возможно, вы захотите взглянуть на документы FormData.

Также может оказаться полезным убедиться, что вы работаете с Flask в режиме отладки, чтобы получать более подробные сообщения об ошибках.

Другие вопросы по тегам