Получение переменной из js в python

У меня есть выпадающий список, выбранные элементы которого записываются в переменную, которую я вывожу в консоль. Такой вопрос:

Как реализовать получение переменной(selectedItem.value) из js во flask python?

app.py:

description = ['one','two','three','four','five','six']

@app.route('/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        docs = request.form.getlist('sel')
        return render_template('login.html', description=description)
    return render_template('login.html', description=description)

login.html

<select id='sel' name='sel' class="selectpicker" multiple data-live-search="true" onchange="printValue(this)">
   {% for desc in description %}
      <option value="{{desc}}">{{desc}}</option>
   {% endfor %}
</select>
<p id="mySelectedValue" style="margin-top: 10px;"></p>

<script type="text/javascript">
    function printValue(selectedItem){
       $('#mySelectedValue').html(selectedItem.value);
       console.log(selectedItem.value);
    }


function process(index) {
    $.ajax({
        url: "/login/",
        type: "post",
        dataType: "json",
        success: function (data) {
            alert(data);
        },
        data: {"selectedItem.value": selectedItem.value}
    });
}


</script>

Полный код тут


Ответы (1 шт):

Автор решения: AivanF.

Клиентская часть:

<select id='sel' name='sel' class="selectpicker sel" multiple data-live-search="true" onchange="optionClick(this)">
    {% for descr in description%}
        <option id="val" value="{{descr}}">{{ descr }}</option>
    {% endfor %}
</select>
<!-- Данные можно отправлять по кнопке -->
<button type="button" class="btn btn-primary" onclick="process();">
    Process
</button>

<script type="text/javascript">
function printValue(selectedItem) {
    $('#mySelectedValue').html(selectedItem.value);
    console.log(selectedItem.value);
}
function process(selectedItem) {
    const data = JSON.stringify({
        "selectedItems": $('#sel').val()
    });
    $.ajax({
        url: "/",
        type: "POST",
        contentType: "application/json",
        data: data,
        success: function (data) {
            console.log(data);
        },
    });
}
function optionClick(selectedItem) {
    printValue(selectedItem);
    // Или можно отправлять в любой другой момент
    // process();
}
</script>

Серверная часть:

from flask import Flask, request, render_template, jsonify
app = Flask(__name__)

description = ['one','two','three','four','five','six']

# Браузер обращается по пути "/", но с методом GET
@app.route('/', methods=['GET'])
def login():
    if request.method == 'POST':
        docs = request.form.getlist('sel')
        return render_template('login.html', description=description)
    return render_template('login.html', description=description)

# Из скрипта мы обращаемся по тому же пути, но методом POST
@app.route('/', methods=['POST'])
def login_post():
    data = request.json
    print('Got data:', data)
    return jsonify({
        'status': 'SUCCESS',
        'data': data,
    })

if __name__ == '__main__':
    app.run()
→ Ссылка