Tengo una lista desordenada con los botones de opción correspondientes. Después de elegir el botón de opción y presionar un botón de envío, me gustaría tomar ese valor y usarlo en la URL redirigida. El formulario se envía correctamente, sin embargo, el valor que devuelve es "on" /operaciones/on en lugar del valor real que se selecciona. Intenté esto usando el método regular = POST y ajax para devolver ese valor, pero no tuve suerte.
HTML:
<form id="warehouse-selection-form" action="/" method="post"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <div class="tab-content mb-4" id="myTabContent"> {% for key, values in warehouses.items() %} <div class="tab-pane fade" id="{{ key.lower().replace('-', '').replace(' ', ' ').replace(' ', '-') }}" role="tabpanel" aria-labelledby="{{ key.lower().replace('-', '').replace(' ', ' ').replace(' ', '-') }}-tab"> {% for value in values %} <label class="btn btn-outline-secondary col-1 text-center rounded px-3 m-1" for="{{ value }}">{{ value }}</label> <input type="radio" class="btn-check" name="radio" id="{{ value }}" autocomplete="off"> {% endfor %} </div> {% endfor %} </div> <button id="submit" style="display:none;" class="btn btn-primary" onclick="submitWarehouse()">Submit</button> </form>Matraz:
@select_warehouse_bp.route("/", methods=["GET", "POST"]) def get_home(): warehouse = request.form['radio'] return redirect(url_for('select_warehouse_bp.get_operations', warehouse=warehouse)) @select_warehouse_bp.route("/operations/<warehouse>", methods=["GET", "POST"]) def get_buildings(warehouse): return render_template("base.html")AJAX:
function submitWarehouse(){ let warehouse = $('input[name="radio"]:checked').attr('id'); $.ajax({ url: `/operations/${warehouse}`, type: "POST", data: JSON.stringify({warehouse: warehouse}), dataType: 'json', success: function () { alert('success'); }, error: function () { alert('fail'); } }); }no está utilizando el atributo de valor para su etiqueta de radio de entrada, si no establece el valor para las entradas de radio HTML, devolverá el valor "on" como predeterminado;