2016-03-18 3 views
2

Mein Ziel ist es, die ID des Knopfes in das Python-Skript zurückzugeben und es zu verwenden, um Dinge zu kontrollieren, die das Skript macht. Nachdem ich einen ganzen Abend versucht habe und es im Grunde mit Versuch und Irrtum durchgegangen bin, bin ich etwas frustriert, weil es etwas Einfaches geben muss, das ich beaufsichtigte.Flask: Return-Button-ID über Ajax

Ich versuchte, Sachen so viel wie möglich zu reduzieren, aber der Knopf wird immer None in request.form.get("button") zurückgeben, der zu einem Fehler 400 führt. Wie ich nicht mit jQuery fest bin, versuchte ich dort viel, aber nichts lieferte etwas anders als a None.

Kann mir jemand helfen?

from flask import Flask, render_template_string, request 
app = Flask(__name__) 

@app.route('/') 
def index(): 
    return render_template_string(''' 
     <html> 
      <head> 
       <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script> 
       <script type="text/javascript"> 
        $(document).ready(function() { 
         $('input').on('click', function() { 
          $.ajax({ 
           url: "{{ url_for('data_post') }}", 
           method: "POST", 
           data: JSON.stringify($(this).attr("id")), 
           contentType: 'application/json;charset=UTF-8', 
           success: function(data) { 
            console.log(data); 
           } 
          }); 
         }); 
        }); 
       </script> 
      </head> 
      <body> 
       <input type="submit" id="testvalue" name="button" value="button"> 
      </body> 
     </html> 
     ''') 


@app.route('/data', methods=['GET', 'POST']) 
def data_post(): 
    text = request.form.get("button") 
    return text 

if __name__ == '__main__': 
    app.run(debug=True) 
+0

Sie senden nur die ID. Sie geben in den Formulardaten keinen Namen. – dirn

Antwort

2

ändern data_post Funktion:

@app.route('/data', methods=['GET', 'POST']) 
def data_post(): 
    text = request.data 
    return text 

und alles sollte in Ordnung sein.

+0

Danke, das funktioniert gut! – ato