Обработка событий js в tilda
Каким образом в js поставить middleware на событие? Есть событие, а хочется сверху на него навесить ещё одно, которое будет выполняться после.
Пример. У меня есть форма на тильде. Она уже заинтегрирована с моим сервисом. Но помимо прочего, мне нужно сразу после отправки сообщения сделать редирект.
Ответы (2 шт):
Отвечу на вопрос про tilda. Именно он фигурировал в примере. Ответ есть здесь.
Вам следует использовать аналогичный скрипт. Он связывает с отправкой формы событие через callback:
<script>
$(document).ready(function () {window.mySuccessFunction = function ($form) {
$.ajax({
url: "https://example.com",
type: "POST",
data: {},
async: false,
success: function (response) {
window.location.href = `https://example.com`;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
window.location.href = `https://example.com`;
}
});
}
setTimeout(function () {
$(".js-form-proccess").each(function () {
$(this).data("success-callback", "window.mySuccessFunction");
});
}, 10000);
});
</script>
По ссылке можно найти примеры, как отправлять данные формы и другие, аналогичные. Вопрос в том, что здесь отправляются данные с помощью ajax, но есть также механизм веб-хуков, который тоже отправляется данные. С одной стороны, он не будет светить url, на который делается запрос. С другой стороны, запрос будет асинхронным и может возникнуть проблема с консистентсностью.
Пример
Делается запрос с помощью веб-хука на регистрацию. Далее делается редирект на страицу с логином. Тогда может оказаться, что редирект на страницу с логином произошёл раньше, чем отработал веб-хук и логин не произошёл. В связи с этим, требуется последовательный набор действий. Сначала -- регистрация. Потом -- логин. Т.е. всё должно быть синхронно.
Если обычный редирект, то это делается в настройках («Контент») на самой тильде.
Если нужно показать сообщение об успехе после редирект, то можно воспользоваться этим решением, а внутрь этого скрипта уже поместить всё своё, что необходимо.