Извлечение данных из Ajax-запроса в Python - PullRequest
2 голосов
/ 30 мая 2019

Я не уверен, как извлечь данные из запроса 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)
    }

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Данные должны поступать в request.get_data(), а не в request.get_json()

. Для получения дополнительной информации

см. request.get_json & request.get_data
0 голосов
/ 30 мая 2019

Если я ясно понимаю, вы не хотите отправлять весь словарь как ('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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...