#python #jquery #flask
#python #jquery #flask
Вопрос:
Я создаю веб-сайт с использованием flask, где у меня есть календарь, и когда пользователь нажимает на день, этот день добавляется в массив «выбранные даты», как показано в консоли.
Затем я пытаюсь создать запрос post при нажатии кнопки, при котором массив отправляется на сервер и применяется некоторая логика. Вот так:
$("#post_vacations").on("click", function() {
alert("hello, world");
$.post({
url: '/vacations',
type : 'post',
data: selected_dates
})
});
Проблема здесь в том, что когда я нажимаю кнопку, ничего не происходит. Есть идеи, почему это не работает?
Редактировать:
Обработчик запроса просто перенаправляет пользователя на другой экран. Но при нажатии кнопки браузер остается на том же экране. Однако предупреждение, которое я добавил в свою функцию onclick, работает.
Кроме того, flask, похоже, распознает эти запросы «Post», он просто не загружает экран
Комментарии:
1. Нужны более конкретные детали отладки, чем «ничего не происходит» .
2. Спасибо за ответ! Я добавил больше деталей
3. Похоже, что «ничего не происходит» действительно неверно. Если вы ожидаете, что страница будет перенаправляться, это не так, как работает ajax.
4. Я так считаю. Каков тогда наилучший способ отправить запрос post, передающий выбранный массив дат?
5. Зависит от того, что вы хотите сделать с ответом
Ответ №1:
Прежде всего, проверьте, работает ли onclick вообще, так console.log
что-нибудь, чтобы проверить, что он работает. Во-вторых, попробуйте поместить его в FormData
объект, например
$("#post_vacations").on("click", function() {
let formData = new FormData();
formData.append('dates', JSON.stringify(selected_dates));
$.ajax({
url: '/vacations',
type: 'POST',
processData: false,
data: formData,
contentType: false,
cache: false,
});
});
Чтобы получить даты в flask, используйте
request.form['dates']
не забудьте впоследствии преобразовать строку в массив
Комментарии:
1. Спасибо за ответ! Я использовал оповещение, и появляется окно с сообщением. Я также пробовал ваш код, но все еще безуспешно… Также добавлена дополнительная информация к исходному сообщению. Это странно, потому что я вижу запросы, зарегистрированные в flask, однако он не загружает нужный экран