да
тогда просто отследить клик по документу если есть такой атрибут, то превентим дефолт отправляем запрос
Я так и пытался, но ничего не вышло: for (const el of document.querySelectorAll('a[data-method]')) { el.addEventListener('click', e => { const method = el.dataset['method'] || 'get'; if (method !== 'get') { e.preventDefault(); axios({ method: method, url: el.getAttribute('href'), }) } }) }
сходу выглядит здраво, вроде
никаких ошибок, ничего не выдаёт? что конкретно не работет?
Мой метод после запроса возвращает редирект, а страница не перезагружается
а, ну ещё бы, а с чего ей перезагружаться самой при отправке запроса? посмотрите теперь в аксиос и сделайте редирект, если надо
или можете сделать фейковую форму по клику и отправить её
Я вообще сначала и клепал формы, но понял что это плохой вариант, когда мне понадобилось сделать такую кнопку внутри другой формы...
я имею в виду джсом форму сделать
Все равно не понял :( Я добавил обработчики then и catch, но туда приходит ошибка оттого что после редиректа идет по непонятной причине запрос страницы DELETE методом, а она method not allowed
во вкладке нетворк все правильно? на верный эндпоинт уходит запрос?
if (method !== 'get') { e.preventDefault(); это предотвращает перезагрузку страницы
Я в курсе. Мне же надо отправить запрос заданным методом, а не GET
if (method === 'get') { return; }
Он и так выйдет из метода. Зачем?
у тебя же событие клик висит на ссылке? ты предотвращаешь дефолтное поведение после клика - перезагрузка страницы, но не отправка
Ты сам то понял что сказал? Я нет... По клику происходит отправка запроса выбранным методом, если он не GET (иначе просто переход по ссылке). Так и задумано.
аа все, я с отправкой формы перепутал
а то что я раньше написал, что в цикле у тебя и другая кнопка может срабатывать ты это продебажил?
Что ты имеешь ввиду? Цикл просто вешает обработчики. Кликаю то я одну кнопку
это не в тему обсуждения, но я в любом случае за делегирование
как я и писал изначально. один обработчик клика на весь документ
так я хочу детали услышать, то что ты предоставил инфу - из этого мало что понятно
может у тебя события всплывают и триггерят другую ссылку
Какие именно детали? Ты спрашивай конкретно. Я не понимаю что тебя интересует
Ничего там не триггерит. Что за бред...
тогда если ты знаешь, то что тогда у тебя второй delete отправляет?
Вот в этом и вопрос. Откуда он берется. Второй delete.
document.addEventListener('click', async (event) => { const { target } = event; if (!target.matches('a[data-method]')) return; const method = target.dataset['method'] || 'get'; const url = target.href; if (method === 'get') return; const response = await axios({ method, url }); const fetchedUrl = response.request.res.responseUrl; if (fethchedUrl !== window.location) { window.location = fethchedUrl; } }); типа того, мб
Какая-то дичь... Зачем? О_о Ловить все клики в документе не экономично. Будет тормозить.
ну здрасьте приехали
Обсуждают сегодня