Применить ajax только к некоторым формам

Рейтинг: 0Ответов: 1Опубликовано: 17.01.2023

Звучит наверное коряво, но суть такова. Есть обработчик форм, который препятствует перезагрузке страницы после их отправки. Но скрипт поиска не может работать без перезагрузке (в моей архитектуре). Хотелось бы, чтобы остальные формы работали без перезагрузки, т. е. все, кроме формы поиска. Наверное можно и форму поиска сделать без перезагрузки, но на это ума у меня точно не хватит. Вот такой скрипт:

document.addEventListener('DOMContentLoaded', () => {
    document.querySelector('form').addEventListener('submit', async (event) => {
        event.preventDefault();

        const { currentTarget: form } = event;
        const { method, action } = form;

        const response = await fetch(action, { method, body: new FormData(form) });
        const json = await response.json();

        if (json.url) {
            window.location.href = '/' + json.url;
        } else {
            alert(json.status + ' - ' + json.message);
        }    
    });
});

Может быть как-то указать селектор, типа класса? Но я не знаком с синтаксисом. Прошу помощи.

Ответы

▲ 0Принят

Решил вопрос в шаблоне:

<?php if ($this->route['action'] != 'posts'): ?>
    <script type="text/javascript" src="/public/scripts/form.js"> </script>
<?php endif ?>

Может быть это конечно и костыль, но работает :)