How to GET data in Flask from AJAX post

后端 未结 3 790
臣服心动
臣服心动 2020-12-25 08:44

I want to retrieve the data from the variable \'clicked\' so I can use it in SQL queries in Flask.

JQuery

$(document).ready(function(){
  var clicked         


        
相关标签:
3条回答
  • 2020-12-25 09:06

    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')
    
    0 讨论(0)
  • 2020-12-25 09:11

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

    from flask_restful import reqparse
    
    def 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)
    
    0 讨论(0)
  • 2020-12-25 09:23

    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')
    
    0 讨论(0)
提交回复
热议问题