Если вы не хотите использовать <form>
в коде (что очень странно), вы можете попробовать
<script>
$('#button').click( function(event) {
event.preventDefault();
var selected = $("#all_classes :selected").val();
alert("selected: " + selected);
$.post("/ra/connect", {"selected_cma": selected}, function(data) {
//alert(data);
countdown = $("#countdown");
countdown.append(data + "<br/>");
});
});
</script>
Остальные должны быть такими же.
JavaScript
отправляет {"selected_cma": selected}
, поэтому Flask
должен использовать то же имя в form.get('selected_cma')
@app.route('/cma/connect', methods=['GET', 'POST'])
def connect_management():
user = request.form.get('selected_cma')
print('user:', user)
return str(user)
и
<select name="selected_cma" class="form-control" id="all_classes">
{% for o in all_classes %}
<option value="{{ o }}" selected>{{ o }}</option>
{% endfor %}
</select>
</div>
<div class="form-group col-xs-3">
<label for="all_entries">the manager</label>
<button class="form-control" id="button">the reciever</button>
<p id="countdown"></p>
И не нужно onclick="onclick()"
, потому что $('#button').click(...)
уже назначить функцию. И если у вас есть функция onclick()
, тогда это может вызвать другие проблемы.
EDIT:
Минимальный рабочий код
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/')
def index():
return render_template_string('''<html>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<select name="selected_class" class="form-control" id="all_classes">
{% for o in all_classes %}
<option value="{{ o }}" selected>{{ o }}</option>
{% endfor %}
</select>
<button class="form-control" id="button">Get gateways</button>
<p id="countdown"></p>
<script>
$('#button').click( function(event) {
event.preventDefault();
var selected = $("#all_classes :selected").val();
alert("selected: " + selected);
$.post("/ra/connect", {"selected_cma": selected}, function(data) {
//alert(data);
countdown = $("#countdown");
countdown.append(data + "<br/>");
});
});
</script>
</html>''', all_classes=['Hello', 'World'])
@app.route('/ra/connect', methods=['GET', 'POST'])
def connect_management():
print(request.form)
print(request.data)
user = request.form.get('selected_cma')
print('user:', user)
return str(user)
app.run()
Кстати: предыдущий вопрос: как получить доступ к выбранному раскрывающемуся списку обратно к flask