2

私はFlaskを学んでいます。フラスコへのjQuery呼び出しを通じてJSONオブジェクトを取得しようとしています。私のhtmlは次のようになります。

<html>
  <head>
    <title>Passenger</title>
    <style type="text/css"></style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  </head>
  <body>
    <div>
      <form onsubmit="return false">
        <input class="name" type="text" placeholder="Name">
        <input class="submit" type="submit" placeholder="Go">
      </form>
    </div>
    <script>
    $("input.submit").click(function(e){
        $.post( "/save", {name: $("input.name").val(), time: "2pm"});
    });
    </script>
 </body>
</html>

Flask アプリ ファイルは次のようになります。

from flask import Flask
from flask import redirect, url_for, jsonify
from flask import request
import json
app = Flask(__name__)

@app.route('/')
def home():
  return redirect(url_for('static',filename='index.html'))

@app.route('/save', methods=['PUT','POST'])
def get_name():
  print request.json
  return request.json

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

このコードを実行すると、None が返されます。JSON オブジェクト [{name: $("input.name").val(), time: "2pm"}] が返されることを期待しています。ありがとう。

4

1 に答える 1

7

問題は、jquery の投稿が json のデータ型を使用していないことです。リクエストの content_type を出力することで確認できます。

print request.content_type
application/x-www-form-urlencoded; charset=UTF-8

Javascript を post json に変更すると、request.json に期待どおりに json が入力されます。

var data = JSON.stringify({name: $("input.name").val(), time: "2pm"});
$.ajax("/save", {
    data: data,
    contentType : "application/json",
    type : "POST"
});

JS コードを変更した後、request.content_type は application/json になることに注意してください。

于 2013-10-19T03:48:24.173 に答える