P
P
perehodit2019-11-21 07:38:33
JavaScript
perehodit, 2019-11-21 07:38:33

How to pass data from JS to Flask?

We need to pass 2 arrays textData and digitData from worksheet.js to blueprint.py. How can I do that ?
//worksheet.js

var titles = document.getElementsByTagName('h3')
var buttons = document.getElementsByTagName('button');
var textarea = document.getElementsByTagName('textarea')[0];

var number = 0;

var buttonValue;
var textData = []
var digitData = []

for (var i = 1; i < titles.length; i++) {
    titles[i].style.display = 'none'
}

for (var i = 0; i < buttons.length; i++) {
    buttons[i].onclick = function(){
        buttonValue = Number(buttons[i].value)
    }
}

function next(){
    textData.push(textarea.value)
    digitData.push(buttonValue);
    console.log(digitData);
    console.log(textData);

    titles[number].style.display = 'none';
    number = number + 1;
    titles[number].style.display = 'block';
    textarea.value = '';

    return false;
}

//index.html
{% extends 'base.html' %}
{% block title %}
Анкетирование
{% endblock title %}
{% block content %}
<div class="container">
    <h1>
        Анкетирование
    </h1>
    <h2>
        Администрация дошкольного образовательного учреждения с целью изучения удовлетворенности родителей качеством услуг дошкольной образовательной организации проводит анкетирование. Уважаемые родители, просим Вас ответить на вопросы анкеты. Обратите внимание, что сохранение данных возможно только, если вы ответите на все вопросы анкеты. Время заполнения анкеты не ограничено. Анкета анонимна. Выражаем благодарность за помощь. Все комментарии обязательны к заполнению
    </h2>
    <div class="worksheet_container">
        {% for question in questions %}
          <h3>{{ question.id }}. {{ question.text }}</h3>  
        {% endfor %}
        <form action="" onsubmit="return next();">
            <div class="worksheet_buttons">
                <button type="submit" value="2">
                    Полностью удовлетворен
                </button>
                <button type="submit" value="1">
                    Частично не удовлетворен
                </button>
                <button type="submit" value="0">
                    Затрудняюсь ответить
                </button>
                <button type="submit" value="-1">
                    Частично удовлетворен
                </button>
                <button type="submit" value="-2">
                    Cовершенно не удовлетворен
                </button>
            </div>
            <textarea name="" id="" cols="50" rows="15" placeholder="Введите коментарий" required></textarea>
        </form>
        <script src="{{ url_for('static', filename='js/worksheet.js') }}"></script>
    </div>
</div>
{% endblock %}

//blueprint.py
from flask import Blueprint, render_template
from models import Questions
from app import db

worksheetsys = Blueprint('worksheetsys', __name__, template_folder='templates')

@worksheetsys.route('/')
def index():
  questions = Questions.query.order_by(Questions.id).all()
  return render_template('worksheetsys/index.html', questions=questions)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
T
Tim, 2020-02-06
@perehodit

Make an endpoint in the flask on POST and see the contents of the Body, and on JS use axios. Merge the two arrays into one and post to the body on the endpoint of the flask.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question