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);
});
  • Вопрос задан
  • 62 просмотра
Решения вопроса 2
nokimaro
@nokimaro
Если получили успешный аякс-ответ, код 200 и тд
делаем редирект на js через window.location.href = 'https://новый url';
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Sorax15
Ты можешь проверить переменную на true или false, если true, то делаешь редирект
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы