Я не знаю, как извлечь данные из запроса Ajax из моего кода Javascript в приложении Python в Flask. Мой запрос Ajax не использует jQuery.
Я пытался использовать request.form.get()
и request.get_json()
в своем коде Python, но оба выдают значение None
.
@app.route("/", methods=["GET", "POST"])
def index():
if not request.get_json() == None:
print(request.get_json())
name = request.get_json()
session["name"] = name.user
return render_template("index.html", channels=channels)
В моем коде Javascript я выполняю простой запрос Ajax:
if (localStorage.getItem("user")) {
document.querySelector("#logout").addEventListener("click", () => {
localStorage.removeItem("user");
})
const request = new XMLHttpRequest();
request.open("POST", "/")
user = JSON.stringify(localStorage.getItem("user"))
request.send(user)
}
Я не использую jQuery
Я знаю. Они связаны, а не дубликаты. Впрочем, посмотрите последнюю.
Спасибо, но последний не показывает, что делать в конце фляги
Данные должны поступать request.get_data()
не в request.get_json()
см. запрос.get_json & запрос.get_data для получения дополнительной информации
Если ваш тип запроса — application/json, он попадет под request.get_json(), в вашем случае вы не упомянули какой-либо тип запроса, который должен быть в request.get_data().
Если я правильно понимаю, вы не хотите отправлять весь словарь, например ('user':'value')
, только значение.
В этом случае request.get_data()
отлично работает в этом случае:
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=["GET","POST"])
def index():
data = open('index.html').read()
print request.get_data()
return data
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
index.html — это простая страница с кнопкой, которая запускает следующий javascript:
var request = new XMLHttpRequest()
request.open("POST","/", true)
var send_data = "Hello World"
request.send(send_data)
связанные: jQuery публикует JSON, Отправка данных JSON с помощью jQuery и Отправить объект JSON с помощью Ajax?