我只是在学习烧瓶.我试图通过jQuery调用获取一个JSON对象到flask.我的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>
Run Code Online (Sandbox Code Playgroud)
Flask app文件看起来像,
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)
Run Code Online (Sandbox Code Playgroud)
运行此代码将返回None.我期望得到JSON对象[{name:$("input.name").val(),time:"2pm"}].谢谢.
问题是jquery帖子没有使用json的数据类型.您可以通过打印出请求content_type来查看:
print request.content_type
application/x-www-form-urlencoded; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
将Javascript更改为发布json,并且应该按照您的预期使用json填充request.json.
var data = JSON.stringify({name: $("input.name").val(), time: "2pm"});
$.ajax("/save", {
data: data,
contentType : "application/json",
type : "POST"
});
Run Code Online (Sandbox Code Playgroud)
请注意,在更改JS代码之后,request.content_type将是application/json
| 归档时间: |
|
| 查看次数: |
3643 次 |
| 最近记录: |