Django. Ajax. Не полностью заполненная форма
Друзья, у меня в django-проекте в html-шаблоне есть форма
<form id="myForm" method="POST" action="{% url 'ajax_act' %}">
Внутри этой формы лежат 4 селекта <select>. В селекты инфа подгружается динамически:
{% for f in form_all %}
<option value="{{ f.id }}">{{ f.name }}</option>
{% endfor %}
В конце данной формы есть кнопка
<button type="submit" id="send-button">Кнопочка</button>
Выбранные данные из этой формы передаются на сервер с помощью javascript:
$(document).ready(function() {
$("#send-button").click(function() {
var fdata = $("#myForm").serialize();
$.ajax({
url: "my_url",
type: "POST",
data: fdata,
success : function(json) {
alert("Successfully sent the URL to Django");
},
error : function(xhr,errmsg,err) {
alert("Could not send URL to Django. Error: " + xhr.status + ": " + xhr.responseText);
}
});
});
});
На основе выбранных данных, django выдаёт новую страничку по новому урлу.
Проблема: Переход на новую страничку работает только тогда, когда во всех 4 селектах что-то выбрано. То есть выберу я данные в 3 из 4 селектов - js мне выдаст сообщение "Successfully sent the URL to Django", но на новую страничку не перейдёт. Выберу что-то во всех 4 селектах - переходит.
Внимание, вопрос: сталкивались вы с такой или подобной ситуацией и где может быть скрыта проблема?
*функция во views.py самая обычная из разряда:
if request.method == 'POST':
return render(request, 'apppp/new_page.html', context)
Ответы (1 шт):
Короче, пацаны и девчонки, такой дибилизм ))) День отмучиться, перерыть весь проект, чтобы найти простейший и тривиальный ответ.
Ответ: волшебное слово novalidate в теге <form>.
Друзья, если у вас, как и у меня, в проекте есть форма с несколькими объектами/выбиралками/селектами/инпутами внутри и нет значения по умолчанию в этих объектах, не забывайте ставить данный параметр. Таким образом форма, будучи не(недо)заполненной, прекрасно отсылается на сервер.
<form novalidate id="myForm" method="POST" action="{% url 'ajax_act' %}">