как правильно получить данные из javascript в мой python flask бэкэнд, используя XMLHttpRequest? - PullRequest
1 голос
/ 08 марта 2020

Итак, я пытаюсь отправить значение в свой бэкэнд flask python, обработать там данные и вернуть их обратно, но после нескольких часов попыток я получил только коды ошибок, 400 или 500. Пожалуйста, помогите мне!

Вот мой js код:

var keyword = document.getElementById("keyword").value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', '/searchresults', true);
xmlhttp.send("keyword=" + keyword);
console.log("SUCCESSFULLY SENT");

и мой python код:

@app.route("/searchresults")
def test():
 return request.args.get['keyword']

моя форма:

<form id="searchform">
<label for="keyword">Keyword <span class="required">*</span> </label>
<input type="text" id="keyword" name="keyword" size="15" required>
</form>

РЕДАКТИРОВАТЬ:

Я проверил сеть, чтобы убедиться, что запрос отправлен. Пожалуйста, поправьте меня, если это не так. enter image description here

1 Ответ

1 голос
/ 08 марта 2020

Вы пытаетесь отправить тело запроса (xmlhttp.send("keyword=" + keyword)) с ключевым словом, но вы используете HTTP-метод GET, который не допускает тело запроса, поэтому keyword=bla никогда не будет частью запроса .

Передать переменные с запросом GET

xmlhttp.open('GET', '/searchresults?keyword=' + keyword, true);
xmlhttp.send();

Код Flask также неверен. .get() - это функция, но она используется как словарь.

Вызовите его как функцию:

keyword = request.args.get('keyword')

Передайте переменные с помощью POST запроса

xmlhttp.open('POST', '/searchresults', true);
xmlhttp.send("keyword=" + keyword);

Вам придется изменить код Flask на посмотрите в теле запроса вместо аргументов:

keyword = request.form.get('keyword')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...