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);
});
  • Вопрос задан
  • 212 просмотров
Решения вопроса 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, то делаешь редирект
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект
19 апр. 2024, в 10:02
6000 руб./за проект