Извлечение данных из запроса Ajax в Python

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

M. Alex 30.05.2019 11:37

Я знаю. Они связаны, а не дубликаты. Впрочем, посмотрите последнюю.

Matt Ellen 30.05.2019 11:39

Спасибо, но последний не показывает, что делать в конце фляги

M. Alex 30.05.2019 11:59

Я думаю, вы должны использовать функцию jsonify, чтобы вернуть json-ответ из вашего API-интерфейса фляги.

Kunal Mukherjee 30.05.2019 12:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
5
2 222
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

см. запрос.get_json & запрос.get_data для получения дополнительной информации

Если ваш тип запроса — application/json, он попадет под request.get_json(), в вашем случае вы не упомянули какой-либо тип запроса, который должен быть в request.get_data().

Naveen Siva 30.05.2019 12:22

Если я правильно понимаю, вы не хотите отправлять весь словарь, например ('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)

Другие вопросы по теме