Замена страницы после отправки данных формы

12
mumumu
На сайте с 07.07.2021
Offline
29
583
Здравствуйте, уважаемые эксперты.
Помогите с решением вопроса:
Есть страница сайта site.mu/forma с формой отправки данных на сторонний сервис.

<form action="https://vopros.mu" method="POST" target="_blank">
<поля формы>
<кнопка "отправить">

После заполнения данных формы и нажатия кнопки "Отправить" в новой вкладке открывается страница vopros.mu/otvet другого сервиса с данными.
Сама страница с формой остается открытой с заполненными полями.

Посоветуйте, пожалуйста, корректный способ сделать так, чтобы сразу после отправки данных формы, вместо исходной страницы site.mu/forma открывалась другая страница сайта, например: site.mu/spasibo

Спасибо


E
На сайте с 01.10.2017
Offline
119
#1

Уберите target="_blank".

А чтобы самому выводить страницу "Спасибо", не нужно предоставлять пользователю возможность управлять переходом на другой сайт. Если речь об API стороннего сервиса или если у него есть соответствующий API, нужно программно выполнять обращение к сервису (на сервере или на клиенте), обрабатывать ответ и выводить, что нужно.

Домены на продажу: https://p20.ru/collection/domains-for-sale
LEOnidUKG
На сайте с 25.11.2006
Offline
1766
#2

Переделывать форму, чтобы её отправлял сервер, а не клиент

Попробовать переделать форму на отправку ajax, если удалённый сервер позволяет это делать.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
E
На сайте с 01.10.2017
Offline
119
#3
estic #:
не нужно предоставлять пользователю возможность управлять переходом на другой сайт
Есть сервисы, которые позволяют определить страницу возврата для подобной схемы взаимодействия.
mumumu
На сайте с 07.07.2021
Offline
29
#4

Спасибо за ответы, но, возможно, я не совсем понятно описал проблему.

target="_blank" здесь особой роли не играет, если его убрать то результаты отправки формы на стороннем сервисе  vopros.mu/otvet просто откроются в текущей вкладке вместо страницы сайта  site.mu/forma.

А мне надо чтобы сразу после отправки данных формы, вместо страницы с формой открывалась другая страница исходного сайта.

Другими словами, желаемая схема такая:

1. Открыта вкладка исходного сайта  site.mu/forma с формой
2. Человек заполняет форму, нажимает кнопку "отправить"
3. Данные формы улетают в сторонний сервис  vopros.mu, а результаты заполнения формы открываются в новой вкладке (потому что таргет_бланк).
4. Сразу после этого события исходная страница  site.mu/forma заменяется в той же вкладке страницей  site.mu/spasibo

Как вариант можно чтобы в новой вкладке открывалась страница  site.mu/spasibo а в начальной - страница сервиса  vopros.mu. Но это не принципиально совсем.

mumumu
На сайте с 07.07.2021
Offline
29
#5
и на сторонний сервис повлиять никак не могу
E
На сайте с 10.02.2024
Offline
14
#6

Самый простой вариант - отправлять данные на сторонний сервис скриптом и обрабатывать ответ.

Если ошибки в ответе нет - переводить на свою спасибо.

Пример так на Jquery:

$('.form').submit(function(e) {
        e.preventDefault();

        var fd = new FormData(this);

        // Отправляем запрос на https://vopros.mu
        $.ajax({
                type: 'POST',
                url: 'https://vopros.mu',
                data: fd,
                processData: false,
                contentType: false,
                success: function(data) {
                        if(typeof data.error != 'undefined') {
                                console.log('ERRORS: ' + data.error);
                        }
                        else {
                                // Открыть страницу Спасибо
                                $(location).attr('href', 'https://site.mu/spasibo');
                        }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                        console.log('ERRORS: ' + textStatus + ', desc: ' + errorThrown);
                }
        });

        return false;
});

Чтобы пример заработал, нужно:

1. Добавить загрузку Jquery

2. Добавить к форме класс 'form'

3. Открыть консоль браузера, отправить форму и ловить ответ от другого сервиса. В зависимости от ответа доработать обработку ошибки в скрипте

VK
На сайте с 26.04.2006
Offline
171
#7
Eddgar #:

Самый простой вариант - отправлять данные на сторонний сервис скриптом и обрабатывать ответ.

Если ошибки в ответе нет - переводить на свою спасибо.

Пример так на Jquery:

Чтобы пример заработал, нужно:

1. Добавить загрузку Jquery

2. Добавить к форме класс 'form'

3. Открыть консоль браузера, отправить форму и ловить ответ от другого сервиса. В зависимости от ответа доработать обработку ошибки в скрипте

А может еще проще оставить как есть но чтоб ява после нажатия на кнопку редиректила страницу куда тс хочет, а в новом окне открывала то, что ранее и открывала?

N2
На сайте с 25.04.2024
Offline
33
#8
На кнопку отправки формы onclick="window.open(ссылка, "_self");"
Vladimir
На сайте с 07.06.2004
Offline
600
#9
Eddgar #:

Самый простой вариант - отправлять данные на сторонний сервис скриптом и обрабатывать ответ.

Самый простой вариант, сформировать после отправки на своей странице - спасибо
Так как, обработка ошибок все рано будет на стороннем сервере
А при неработающем сторонненем сервере, все равно спасибо, ибо сторонний не работает

Аэройога ( https://vk.com/aeroyogadom ) Йога в гамаках ( https://vk.com/aero_yoga ) Аэройога обучение ( https://aeroyoga.ru ) и просто фото ( https://weandworld.com )
mumumu
На сайте с 07.07.2021
Offline
29
#10
Nil2024 #:
На кнопку отправки формы onclick="window.open(ссылка, "_self");"

Спасибо.
Вот, сделал как вы написали

<input type="button" value="Узнать" onclick="window.open(https://site.ru/spasibo, "_self");">

но только почему-то не работает, не происходит редирект.
Может надо что-нибудь ещё дописать?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий