Ваш маршрут post
настроен для обработки запросов GET
и POST
, но вы не различаете запросы GET
и POST
.Поскольку нет различий между двумя типами запросов, если ваш браузер отправил запрос GET на ваш почтовый маршрут на вашем флеш-сервере, в вашем запросе не будет данных JSON
. Простое условие, подобноеследующее: if flask.request.method == 'POST':
может использоваться для различения двух типов запросов.С учетом вышесказанного, может быть, вы могли бы попробовать что-то вроде следующего:
@app.route('/post', methods=['GET', 'POST'])
def post():
if request.method == "POST":
req_data = request.get_json()
x = req_data['index']
return render_template('post.html', x=x)
else: # GET request
# handle as you see fit probably want to render a page
# with inputs for a user to fill out
return render_template(<page_you_wish_to_render>)
Если это не сработает, не могли бы вы распечатать req_data
?Таким образом, мы можем видеть, как выглядит запрос, поскольку он может быть недействительным JSON
.
Кроме того, ваш вызов ajax
выглядит немного не так, возможно, вы могли бы отредактировать только часть Ajax примерно так:
$.ajax({
type : 'POST',
url : "{{url_for('post')}}",
contentType: 'application/json;charset=UTF-8',
data : {'index':index}
});
Наконец, я бы поставил оператор debugger
прямо перед отправкой запроса ajax, чтобы убедиться, что запрос правильный.
Надеюсь, это поможет!