使用 POST 请求使用 AJAX 将 JSON 数据从模板发送到 Flask:
- 将请求标头设置为内容类型 JSON。
-
JSON.stringify 发送到 Flask 之前的数据。
在 Flask 中接收 JSON 数据:
我展示了一个将 JSON 数据发送到 Flask、在 Flask 中处理并将处理后的数据从 Flask 返回到模板的示例。
最初 JSON 数据包含一个对象数组:
[
{"name": "John", "email": "John@test.com"},
{"name": "Jenny", "email": "Jenny@yahoo.com"}
]
假设我们需要修改此数据以具有id 属性。
文件夹结构:
├── app.py
└── templates
└── index.html
app.py:
from flask import Flask, request, jsonify, render_template
app = Flask(__name__)
def get_processed_data(data):
for i,item in enumerate(data):
data[i]["id"] = i
return data
@app.route("/", methods=['GET', 'POST'])
def login():
if request.method == "POST":
request_data = request.get_json()
processed_data = get_processed_data(request_data)
return jsonify(processed_data), 200
return render_template("index.html")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
index.html:
<html>
<head>
<title>Post JSON data using AJAX</title>
</head>
<body>
<h2>
POST JSON data using AJAX
</h2>
<button id="send_data_btn">Send Data</button>
<script>
var send_data_btn = document.getElementById("send_data_btn");
function postData() {
var request_url = "http://127.0.0.1:5000/";
var request_payload = [
{"name": "John", "email": "John@test.com"},
{"name": "Jenny", "email": "Jenny@yahoo.com"}
];
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.open('POST', request_url);
xhr.onreadystatechange = function() {
if (xhr.readyState==4 && xhr.status==200) {
var processed_data = JSON.parse(xhr.responseText);
console.log(processed_data);
}
};
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(JSON.stringify(request_payload));
}
send_data_btn.addEventListener("click", postData);
</script>
</body>
</html>
输出:
当用户点击 Send Data 按钮时,它会将 JSON 数据从模板发送到 Flask 应用程序。在 Flask 应用中,对数据进行处理,并将处理后的数据返回给模板。