2016-03-18 27 views
2

私の目標は、ボタンのIDをPythonスクリプトに戻し、スクリプトが行っていることを制御することです。一晩を過ごした後、基本的には試行錯誤しながらやっていますが、私はそれに少し不満を抱いています。Flask:ajax経由でボタンのIDを返す

私は可能な限り部品を減らそうとしましたが、ボタンはいつもNonerequest.form.get("button")に返します。これはエラー400につながります。私はjQueryをしっかりとしていないので、たくさん試しましたが、 a None

誰かが私を助けることができますか?

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

IDのみを送信しています。フォームデータには名前を付けないでください。 – dirn

答えて

2

変更data_post機能:

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

、すべてが問題ないはずです。

+0

ありがとう、これはちょうどうまく動作します! – ato

関連する問題