Не срабатывает скрипт после отправки в PHP

118
27 мая 2021, 09:00

Есть такой скрипт

  // Отправка заявки 
$(document).ready(function() {
    $('form').submit(function() { // проверка на пустоту заполненных полей. Атрибут html5 — required не подходит (не поддерживается Safari)
        if (document.form.name.value === '' || document.form.phone.value === '' ) {
            valid = false;
            return valid;
        }
        $.ajax({
            type: "POST",
            url: "mail.php",
            data: $(this).serialize()
        });alert("Thank you!");
            setTimeout(function() {
                // Done Functions
                th.trigger("reset");
            }, 1000);
        });
        return false;
    });
});
// Закрыть попап «спасибо»
$('.js-close-thank-you').click(function() { // по клику на крестик
    $('.js-overlay-thank-you').fadeOut();
});
$(document).mouseup(function (e) { // по клику вне попапа
    var popup = $('.popup');
    if (e.target!=popup[0]&&popup.has(e.target).length === 0){
        $('.js-overlay-thank-you').fadeOut();
    }
});
// Маска ввода номера телефона (плагин maskedinput)
$(function($){
    $('[name="phone"]').mask("+7(999) 999-9999");
});

После отправки через Ajax формы в PHP скрипт не продолжает работу и закончить отправку можно лишь в самом PHP. Как сделать так что бы скрипт продолжил свою работу обнулив строки и выдав алерт к примеру, или как закончить PHP что бы он отправил данные о том что форма отправлена... Вот код PHP

    <?php 
require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$project_name = trim($_POST["project_name"]);
$form_subject = trim($_POST["form_subject"]);
//$mail->SMTPDebug = 3;                               // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.mail.ru';                                                                                           // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'lqrwqwr2@bk.ru'; // Ваш логин от почты с которой будут отправляться письма
$mail->Password = '32'; // Ваш пароль от почты с которой будут отправляться письма
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to / этот порт может отличаться у других провайдеров
$mail->setFrom('rwqqqwrqw2@bk.ru'); // от кого будет уходить письмо?
$mail->addAddress('uijfqoiji@bk.ru');     // Кому будет уходить письмо 
//$mail->addAddress('ellen@example.com');               // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML
$mail->Subject ='Заявка с сайта' .$form_subject;
$mail->Body    = '' .$name . ' оставил заявку, его телефон ' .$phone. '<br>Почта этого пользователя: ' .$email. '<br>C сайта ' .$project_name. '<br>Услуга ' .$form_subject;
$mail->AltBody = '';
if(!$mail->send()) {
    echo 'Error';
} else {
    header('location: thank-you.html');
}
?>
Answer 1

Как-то так:

// Отправка заявки 
$(document).ready(function() {
    $('form').submit(function(e) { // проверка на пустоту заполненных полей. Атрибут html5 — required не подходит (не поддерживается Safari)
        // Отключаем стандартный сабмит формы
        e.preventDefault();
        if (document.form.name.value === '' || document.form.phone.value === '' ) {
            valid = false;
            return valid;
        }
        $.ajax({
            type: "POST",
            url: "mail.php",
            data: $(this).serialize(),
            success: function (data,status,xhr){
                let retData = $.parseJSON(data);
                if (retData['success']=='true') { 
                    alert('данные отправлены'); 
                    $(this).reset(); 
                }
            }
        });   
    });
});
// Закрыть попап «спасибо»
$('.js-close-thank-you').click(function() { // по клику на крестик
    $('.js-overlay-thank-you').fadeOut();
});
$(document).mouseup(function (e) { // по клику вне попапа
    var popup = $('.popup');
    if (e.target!=popup[0]&&popup.has(e.target).length === 0){
        $('.js-overlay-thank-you').fadeOut();
    }
});
// Маска ввода номера телефона (плагин maskedinput)
$(function($){
    $('[name="phone"]').mask("+7(999) 999-9999");
});

И в php заменяем header('location: thank-you.html'); на echo json_encode(['success'=>true])

READ ALSO
Java, запись в файл со смещением

Java, запись в файл со смещением

Вопрос, как в Java(каким классом?) можно производить запись в середину файла(перезаписать блок по смещению)

128
Помогите понять суть дженериков в java

Помогите понять суть дженериков в java

прочитал достаточно литературы, но суть дженериков не понял

114