WhatIsHTML

Отправка формы с модальным окном

    Рекомендуемые сообщения

    WhatIsHTML    3
    WhatIsHTML

    Привет всем. Помогите, пожалуйста, разобраться.
    Задача следующая : после того, как пользователь заполнит и нажмет на кнопку отправки формы, должно появится модальное окно с текстом "Спасибо" и форма отправится на почту. Искал в сети примеры, но ничего так  и не заработало. Последний вариант, на котором остановился, как самый простой.

    Есть форма

    <form id="ajaxform" action="" class="promo__form" name="mail" method="post" ectype="text/plain">                                
      <p> <input placeholder="имя" name="name" class="input" required="required" type="text">
        <input placeholder="телефон" name="phone" class="input pull-right" required="required" type="text">                                </p><input name="submit" value="узнать подробности" class="custom-button" type="submit">
    </form>

    Здесь взял плагин http://malsup.com/jquery/form/ и подключаю его (в конце страницы, если это имеет значение)

    <script src="js/jquery-2.1.3.min.js"></script>
    <script src="http://malsup.github.com/jquery.form.js"></script>


    Есть обработчик
     

    <?php header("Location: {$_SERVER['HTTP_REFERER']}");
        
                        if($_POST['submit']) {
                                $name = substr(htmlspecialchars(trim($_POST['name'])), 0, 1000);
                                $phone = substr(htmlspecialchars(trim($_POST['phone'])), 0, 1000);
                                $from = substr(htmlspecialchars(trim($_POST['email'])), 0, 1000);
                                $message =  substr(htmlspecialchars(trim($_POST['message'])), 0, 1000000);
                                $message .= "\n" ."My phone: ".$phone;
                                $headers = 'From: '.$from . "\r\n";
                                $headers .= "MIME-Version: 1.0" . "\r\n";
                                  $headers .= "Content-type:text/plain;charset=utf-8" . "\r\n";
    
                                $to = '[email protected]';// Your email here
                            
                                mail($to, $name, $message, $headers);       
                        }
                        exit;
                    ?>

    И сам jQuery

    $('#ajaxform').ajaxForm(function() {
                    //$('#modal-thanks').fadeIn();
                    alert("Thank you for your comment!");
                });

    Результат работы : после заполнения формы и нажатия на кнопку, всплывает alert с текстом, НО на почту ничего не приходит.
    В чем проблема? Ломаю голову второй день, не могу понять, что не так.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    WhatIsHTML    3
    WhatIsHTML

    Еще немного переделал, взял старый рабочий код пхп, но с ним тоже письма не доходят на почту. Возможно где-то забыл что-то банальное, подскажите, пожалуйста.

    ХТМЛ

    <form id="promoform" action="" class="promo__form" name="mail" method="post" ectype="text/plain">
                                    <p>
                                        <input placeholder="имя" name="name" class="input" required="required" type="text">
                                        <input placeholder="телефон" name="phone" class="input pull-right" required="required" type="text">
                                    </p>
                                    <input id="promo-button" name="submit" value="узнать подробности" class="custom-button" type="submit">
     </form>

     

    JS

    $("#promoform").submit(function(e) {
                    e.preventDefault();
                    $.ajax({
                        type: 'POST',
                        data: $("#promoform").serialize(),
                        url: 'form_handler.php',
                        success: function(data) {
                            $("#modal-thanks").modal("show");
                        }
                    });
                    return false;
    });

     

    ПХП

    <?php header("Location: {$_SERVER['HTTP_REFERER']}");
        
                                            if($_POST['submit']) {
                                                            $name = substr(htmlspecialchars(trim($_POST['name'])), 0, 1000);
                                                    $phone = substr(htmlspecialchars(trim($_POST['phone'])), 0, 1000);
                                                    $from = substr(htmlspecialchars(trim($_POST['email'])), 0, 1000);
                                                    $message =  substr(htmlspecialchars(trim($_POST['message'])), 0, 1000000);
                                                    $message .= "\n" ."| My phone: ".$phone;
                                                            $headers = 'From: '.$from . "\r\n";
                                                    $headers .= "MIME-Version: 1.0" . "\r\n";
                                                            $headers .= "Content-type:text/html;charset=utf-8" . "\r\n";
    
                                                    $to = '';// Your email here
                                                    
                                                    
                                                    mail($to, $name, $message, $headers);
                                                    
                                            }
    
                                            exit;
                                    ?>

    В целях тестирования, вырубил JS, в action поставил путь к обработчику формы, и в самом обработчике в конце сделал так

    if (mail($to, $name, $message, $headers)) {
                                                            echo "SENT!";
                                                    }

    В браузере выводится SENT , соотв. функция mail() срабатывает успешно (?). Так в чем тогда загвоздка?

    Изменено пользователем WhatIsHTML

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    jdk    18
    jdk

    Чтобы сработал

    success: function(data) {}

    Нужно что бы

    if($_POST['submit']) {}

    что то вывел. Сделайте например так:

    if($_POST['submit']) {
                                                            $name = substr(htmlspecialchars(trim($_POST['name'])), 0, 1000);
                                                    $phone = substr(htmlspecialchars(trim($_POST['phone'])), 0, 1000);
                                                    $from = substr(htmlspecialchars(trim($_POST['email'])), 0, 1000);
                                                    $message =  substr(htmlspecialchars(trim($_POST['message'])), 0, 1000000);
                                                    $message .= "\n" ."| My phone: ".$phone;
                                                            $headers = 'From: '.$from . "\r\n";
                                                    $headers .= "MIME-Version: 1.0" . "\r\n";
                                                            $headers .= "Content-type:text/html;charset=utf-8" . "\r\n";
    
                                                    $to = '';// Your email here
                                                    
                                                    
                                                    mail($to, $name, $message, $headers);
                                                            echo "Message is sended";
                                                    
                                            }

    должно заработать

    Изменено пользователем jdk

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.

    Войти сейчас

    • Войти через Facebook
    • Войти через Twitter
    • Войти через Microsoft
    • Войти через LinkedIn
    • Войти через Google

    • Похожие публикации

      • Divnenkiy
        Автор: Divnenkiy
        Здравствуйте.
        Мучаюсь не первый день с такой проблемой.
        Есть jquery, есть модальная форма, сначала мне нужно выполнить GET запрос на сервер, и в зависимости от того, что сервер ответит решить можно ли открывать форму или нет.
        Если использоваться асинхронный запрос, то понятно, что форма откроется в любом случае. А если использовать синхронный то всё хорошо, но консоль браузера ругается, что я не правильно поступаю и мои методы Deprecated.
        Как сейчас правильно поступать в современных тенденциях?
        Для понимания что я хочу, изображу это примерно так:
        function getAccess(){
          ... запрос GET на сервер
        return ответ
        }
        function showModalWindow(){
        если getAccess() то открываем форму
        }
        Не представляю как это вырулить асинхронно
      • torsar
        Автор: torsar
        Коммерческий опыт:
        c++, directshow, бд  - firebird

        Ищу удаленку, верстка, frontend.
        js/jquery/html/css
        php
        технический английский

        mail: [email protected]
        skype: [email protected]
      • alex252003
        Автор: alex252003
        Привет!
        Подскажите пожалуйста, есть мобильное меню работающее по клику, хочу использовать свойство transition чтобы изменить скорость отображения меню но не получается
        Демо 1
        Демо онлайн
        там используется jquery для отображения меню
        $(".mob-menu").click(function(){ $(this).toggleClass("open"); // transform mobile menu icon to X $(".nav-left,.wrapper,.header").toggleClass("openleft"); }); я пробую добавить css эффект transition но не работает, в чем может быть проблема?
        .nav-left.openleft,.wrapper.openleft,.openleft{ -webkit-transition: all 2s; -moz-transition: all 2s; -o-transition: all 2s; transition:all 2s; }