Значение перенаправления с отмеченного переключателя отображается на

#javascript #html #ajax #flask

Вопрос:

У меня есть неупорядоченный список с соответствующими переключателями. После выбора переключателя и нажатия кнопки отправки я хотел бы принять это значение и использовать его в перенаправленном URL-адресе. Форма успешно отправляется, однако возвращаемое ею значение «включено» /операции/включено вместо выбранного фактического значения. Я пробовал это с помощью обычного метода=POST, а также ajax, чтобы вернуть это значение, но безуспешно.

HTML:

 lt;form id="warehouse-selection-form" action="/" method="post"gt;  lt;input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/gt;  lt;div class="tab-content mb-4" id="myTabContent"gt;  {% for key, values in warehouses.items() %}  lt;div class="tab-pane fade" id="{{ key.lower().replace('-', '').replace(' ', ' ').replace(' ', '-') }}" role="tabpanel" aria-labelledby="{{ key.lower().replace('-', '').replace(' ', ' ').replace(' ', '-') }}-tab"gt;  {% for value in values %}  lt;label class="btn btn-outline-secondary col-1 text-center rounded px-3 m-1" for="{{ value }}"gt;{{ value }}lt;/labelgt;  lt;input type="radio" class="btn-check" name="radio" id="{{ value }}" autocomplete="off"gt;  {% endfor %}  lt;/divgt;  {% endfor %}  lt;/divgt;   lt;button id="submit" style="display:none;" class="btn btn-primary" onclick="submitWarehouse()"gt;Submitlt;/buttongt; lt;/formgt;  

Колба:

 @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/lt;warehousegt;", methods=["GET", "POST"]) def get_buildings(warehouse):  return render_template("base.html")  

АЯКС:

  • удалите токен CSRF, если используете этот метод и метод=post
  • Я также попытался просто перенаправить с помощью местоположения.href, чтобы избежать возврата на сервер, но не повезло.
 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');  }  }); }  

Комментарии:

1. Ты забыл value="{{ value }}" в радиотеге.

Ответ №1:

вы не используете атрибут value для своего входного радио-тега, если вы не зададите значение для HTML-радио-входов, оно вернет значение «включено» по умолчанию;