How to GET data in Flask from AJAX post How to GET data in Flask from AJAX post flask flask

How to GET data in Flask from AJAX post


You can compose your payload in your ajax request as so:

$(document).ready(function(){var clicked;$(".favorite").click(function(){clicked = $(this).attr("name");$.ajax({  type : 'POST',  url : "{{url_for('test')}}",  contentType: 'application/json;charset=UTF-8',  data : {'data':clicked}}); });});

In your flask endpoint, you can extract the value as follows:

@app.route('/test/', methods=['GET','POST'])def test():     clicked=None     if request.method == "POST":          clicked=request.json['data']     return render_template('test.html')


I used the best answer but i found a bad request error. I solve this error as below:

1- remove this line from ajax request:

contentType: 'application/json;charset=UTF-8',

2- Access to data by request.form instead of request.json.

The Javascript part will similar to this:

$(document).ready(function(){var clicked;$(".favorite").click(function(){clicked = $(this).attr("name");$.ajax({  type : 'POST',  url : "{{url_for('test')}}",  data : {'data':clicked}}); });});

Flask part:

@app.route('/test/', methods=['GET','POST'])def test():      clicked=None      if request.method == "POST":          clicked=request.form['data']     return render_template('test.html')


At your flask app end-point , you can define method to retrieve GET/POST data like this :

from flask_restful import reqparsedef parse_arg_from_requests(arg, **kwargs):    parse = reqparse.RequestParser()    parse.add_argument(arg, **kwargs)    args = parse.parse_args()    return args[arg]@app.route('/test/', methods=['GET','POST'])def test():      clicked = parse_arg_from_requests('data')      return render_template('test.html' , clicked=clicked)