Ошибка 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 в режиме отладки, чтобы получать более подробные сообщения об ошибках.