Контактная форма - Как не перенаправлять на другую страницу после отправки

У меня есть контактная форма, которая работает нормально, но моя проблема в том, что она переходит на другую страницу, если вы нажимаете «Отправить» и повторяете «Электронное письмо отправлено!».

Как я могу предотвратить такое перенаправление? Я хочу, чтобы он просто появлялся под кнопкой, иначе кнопка исчезнет и будет заменена на "Электронное письмо отправлено!" или «Ошибка!»?

Вот мой HTML:

                <div style = "padding-top: 75px; padding-left: 0;" class = "col-md-6 col-sm-6 col-xs-12 contact-padding hidden-xs hidden-sm" id = "form_container">
                    <div class = "row">
                        <div class = "col-centered1 col-md-8">
                            <h2 style = "font-family: 'yrthree_boldregular', sans-serif;" class = "divider-header3">Hit us up</h2> 
                        </div>
                    </div>

                    <form role = "form" method = "post" id = "contact-form" action = "mail.php" name = "contact-form">
                        <div class = "row">
                            <div class = "col-centered1 col-md-8 form-group">
                                <input type = "text" id = "name" name = "name" class = "form-control" placeholder = "NAME" required>
                            </div>
                        </div>

                        <div class = "row">
                            <div class = "col-centered1 col-md-8 form-group">
                                <input type = "text" id = "email" name = "email" class = "form-control" placeholder = "EMAIL" required>
                            </div>
                        </div>

                        <div class = "row">
                            <div class = "col-centered1 col-md-8 form-group">
                                <textarea style = "resize: none; border: 0; color: #07002c;" class = "form-control" type = "text" name = "message" id = "message" placeholder = "MESSAGE" maxlength = "6000" rows = "7"></textarea>
                            </div>
                        </div>

                        <div class = "row">
                            <div class = "col-centered1 col-md-8 form-group">
                                    <a class = "btn btn-primary pull-left send-button1" onclick = "document.getElementById('contact-form').submit();">
                                        <img draggable = "false" src = "/images/send-button1.jpg" alt = "" onmouseover = "this.src='/images/send-button2.jpg';" onmouseout = "this.src='/images/send-button1.jpg';">
                                    </a>
                            </div>
                        </div>
                    </form>
                </div>

Вот мой PHP-код:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$content = "From: $name \n Email: $email \n Message: $message";
$recipient = "[email protected]";
$mailheader = "From: $email \r\n";
mail($recipient, $content, $mailheader) or die("Error!");
echo "Email sent!";
?>

Спасибо! :)

Вы можете использовать Ajax.stackoverflow.com/questions/16616250/… в этом посте, моя помощь.

Mahbubul Islam 29.10.2018 10:31

Затем либо поместите код и HTML в тот же файл, и когда вы перекрасите страницу, сделайте это с желаемым результатом. Или вам придется изучить AJAX

RiggsFolly 29.10.2018 10:31

Используя AJAX, вы можете выполнять операции PHP без перезагрузки страницы или перенаправления.

Manoj Singh 29.10.2018 10:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
832
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

действие формы должно быть пустым, например и добавить php-код должен быть на той же странице, а файлы ext. должен быть .php

Ответ принят как подходящий

Вы можете использовать ajax для отправки без перенаправления на другую страницу. Я прочитал этот ответ на это. Вы можете написать свой код примерно так:

 <script type = "text/javascript">
function sendEnquiryform(){
    var name=$('#name').val();
    var email=$('#email').val();
    var message=$('#message').val();
    $.post("send_mail.php",'name='+name+'&email='+email'&message='+message,function(result,status,xhr) {
            if ( status.toLowerCase()= = "error".toLowerCase() )
            { alert("An Error Occurred.."); }
            else { 
                //alert(result);
                $('#sucessMessage').html(result);
            }
        })
        .fail(function(){ alert("something went wrong. Please try again") });
}

HTML:

    <form method = "post" name = "FrmEnquiry" id = "FrmEnquiry" action = "" onsubmit = "sendEnquiryform();">
    <input name = "name" id = "name" required = "required" placeholder = "Your Name">
    <input name = "email" id = "email" type = "email" required = "required" placeholder = "Your Email">

    <div class = "clearfix"> </div>
    <textarea name = "message" id = "message" cols = "20" rows = "5" required = "required" placeholder = "Message"></textarea>
    <div class = "submit">
        <input id = "submit" name = "submit" type = "submit" value = "Submit">
    </div>
</form>

<span id = "sucessMessage"> </span>

отправить mail.php

 <?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: agriindiaexp.com'; 
    $to = '[email protected]'; 
    $subject = 'Email Inquiry';

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
        if (mail ($to, $subject, $body, $from)) { 
           $success = "Message successfully sent";
        } else {
            $success = "Message Sending Failed, try again";
        }
    }
?>

Это сработало для меня. Спасибо автор за ответ.

Код отсюда: stackoverflow.com/questions/40968647/…

brasofilo 31.10.2018 03:12

Другие вопросы по теме