Задать вопрос
ShutyA1488
@ShutyA1488

Как организовать редирект после успешной отправки формы PHP+JS?

Добрый день, не могу понять как организовать переход на внутренюю страницу Thanks Page. После удачной отправки формы, вся страница вставляется в alert, а нужно чтобы делался редирект. Думаю все из за этого куска кода "alert(http.responseText);", подскажите аналоги.
<form id="ajax-contact-form" enctype="multipart/form-data" method="post">
                    <input id="nameFF" name="nameFF" type="text" placeholder="Ваше имя" minlength="2" maxlength="10" required>

                    <input id="telFF" name="telFF" type="tel" placeholder="Ваш телефон" pattern="[+][^[ 0-9]+$]" minlength="10" maxlength="13" required>

                    <div class="upload-file__wrapper">
                        <input id="fileFF" name="fileFF" type="file" class="upload-file__input" multiple
                               accept="image/jpeg,image/png,image/gif">
                        <label class="upload-file__label" for="fileFF">
                            <span class="upload-file__text">Прикрепить файл</span>
                        </label>
                    </div>

                    <button class="btn btn-form df" type="submit" id="submitFF">Отправить форму</button>
                </form>


<?php
if (isset ($_POST['telFF'])) {
  $to = "romaishytin@gmail.com";
  $from = "support@tpverstak.ru";
  $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
  $message = "\nИмя пользователя: ".$_POST['nameFF']."\nТелефон пользователя ".$_POST['telFF']."\n\nАдрес сайта: ".$_SERVER['HTTP_REFERER'];
 
  $boundary = md5(date('r', time()));
  $filesize = '';
  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "From: " . $from . "\r\n";
  $headers .= "Reply-To: " . $from . "\r\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  $message="
Content-Type: multipart/mixed; boundary=\"$boundary\"
 
--$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit
 
$message";
     if(is_uploaded_file($_FILES['fileFF']['tmp_name'])) {
         $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'])));
         $filename = $_FILES['fileFF']['name'];
         $filetype = $_FILES['fileFF']['type'];
         $filesize = $_FILES['fileFF']['size'];
         $message.="
 
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
 
$attachment";
     }
   $message.="
--$boundary--";
 
  if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    mail($to, $subject, $message, $headers);
      header('Location: thank-you.html');
  } else {
    echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
  }
}


/* https://api.telegram.org/bot1322118984:AAH4ljOF0Ljs3qBcS-IfJq4sOhYT69Iv3Ro/getUpdates,
где, XXXXXXXXXXXXXXXXXXXXXXX - токен вашего бота, полученный ранее */

$name = $_POST['nameFF'];
$phone = $_POST['telFF'];
$token = "1322118984:AAH4ljOF0Ljs3qBcS-IfJq4sOhYT69Iv3Ro";
$chat_id = "-426174005";
$arr = array(
    'Имя пользователя: ' => $name,
    'Телефон: ' => $phone
);

foreach($arr as $key => $value) {
    $txt .= "<b>".$key."</b> ".$value."%0A";
};

$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");

//if ($sendToTelegram) {
//    header('Location: thank-you.html');
//} else {
//    echo "Error";
//}
?>


$(function() {
    document.getElementById('ajax-contact-form').addEventListener('submit', function(evt){
        var http = new XMLHttpRequest(), f = this;
        var th = $(this);
        evt.preventDefault();
        http.open("POST", "contact.php", true);
        http.onreadystatechange = function() {
            if (http.readyState == 4 && http.status == 200) {
                alert(http.responseText);
                if (http.responseText.indexOf(f.nameFF.value) == 0) { // очистить поля формы, если в ответе первым словом будет имя отправителя (nameFF)
                    th.trigger("reset");
                }
            }
        }
        http.onerror = function() {
            alert('Ошибка, попробуйте еще раз');
        }
        http.send(new FormData(f));
    }, false);
});
  • Вопрос задан
  • 318 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если получили успешный аякс-ответ, код 200 и тд
делаем редирект на js через window.location.href = 'https://новый url';
Ответ написан
Комментировать
Bagonyty_comp
@Bagonyty_comp
Баги повсюду.
Sucess = "window.location.href = 'https://sait"; к аяксу
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Sorax15
Ты можешь проверить переменную на true или false, если true, то делаешь редирект
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽