【问题标题】:How to notify a user their email has been sent on the same page rather than page redirect如何通知用户他们的电子邮件已在同一页面上发送而不是页面重定向
【发布时间】:2017-08-07 10:02:28
【问题描述】:

我是 PHP 新手,当用户使用网站联系我们表单时,我正在使用脚本发送电子邮件。电子邮件工作正常。然而,我遇到的问题是,当用户提交消息时,他们会被重定向到一个新页面,说明“已成功提交联系表单。谢谢,我会尽快回复您!”。我想要的是表单上方同一页面上的一条简单消息(即绿色消息,上面写着“已发送电子邮件”之类的内容。

PHP 脚本是:

Code Share

我的 HTML 表单目前如下所示:

                <form id="contact-form" method="post" action="sendemail.php" role="form">

                <div class="messages"></div>

                <div class="controls">

                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="form_name">Firstname *</label>
                                <input id="form_name" type="text" name="name" class="form-control" placeholder="Please enter your firstname *" required="required" data-error="Firstname is required.">
                                <div class="help-block with-errors"></div>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="form_lastname">Lastname *</label>
                                <input id="form_lastname" type="text" name="surname" class="form-control" placeholder="Please enter your lastname *" required="required" data-error="Lastname is required.">
                                <div class="help-block with-errors"></div>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="form_email">Email *</label>
                                <input id="form_email" type="email" name="email" class="form-control" placeholder="Please enter your email *" required="required" data-error="Valid email is required.">
                                <div class="help-block with-errors"></div>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="form_phone">Phone</label>
                                <input id="form_phone" type="tel" name="phone" class="form-control" placeholder="Please enter your phone">
                                <div class="help-block with-errors"></div>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-12">
                            <div class="form-group">
                                <label for="form_message">Message *</label>
                                <textarea id="form_message" name="message" class="form-control" placeholder="Message for me *" rows="6" required="required" data-error="Please,leave us a message."></textarea>
                                <div class="help-block with-errors"></div>
                            </div>
                        </div>
                        <div class="col-md-12">
                            <input type="submit" class="btn btn-success btn-send" value="Send message">
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-12">
                            <p class="text-muted"><strong>*</strong> These fields are required.</p>
                        </div>
                    </div>
                </div>

            </form>

提前致谢!

【问题讨论】:

    标签: php html contactus


    【解决方案1】:

    好的,在与 cmets 交谈之后,我创建了这个:

    <div class="messages"></div>
    
    <div class="controls">
    
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <label for="form_name">Firstname *</label>
                    <input id="form_name" type="text" name="name" class="form-control" placeholder="Please enter your firstname *" required="required" data-error="Firstname is required.">
                    <div class="help-block with-errors"></div>
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <label for="form_lastname">Lastname *</label>
                    <input id="form_lastname" type="text" name="surname" class="form-control" placeholder="Please enter your lastname *" required="required" data-error="Lastname is required.">
                    <div class="help-block with-errors"></div>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <label for="form_email">Email *</label>
                    <input id="form_email" type="email" name="email" class="form-control" placeholder="Please enter your email *" required="required" data-error="Valid email is required.">
                    <div class="help-block with-errors"></div>
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <label for="form_phone">Phone</label>
                    <input id="form_phone" type="tel" name="phone" class="form-control" placeholder="Please enter your phone">
                    <div class="help-block with-errors"></div>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <div class="form-group">
                    <label for="form_message">Message *</label>
                    <textarea id="form_message" name="message" class="form-control" placeholder="Message for me *" rows="6" required="required" data-error="Please,leave us a message."></textarea>
                    <div class="help-block with-errors"></div>
                </div>
            </div>
            <div class="col-md-12">
                <button class="btn btn-success btn-send" id="sendEmailBtn">Send message</button>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <p class="text-muted"><strong>*</strong> These fields are required.</p>
            </div>
        </div>
    </div>
    
    <script type="text/javascript">
        $(document).ready(function () {
            $("#sendEmailBtn").click(function () {
                /* Disable the input fields and button so the user
                    can't edit them or submit the form multiple times */
                $("input").prop("disabled", true);
                $("#sendEmailBtn").prop("disabled", true);
    
                // Submit the form via ajax
                $.post("http://yourdomain.com/sendemail.php", {
                    name: $("#form_name").val(),
                    surname: $("#form_lastname").val(),
                    email: $("#form_email").val(),
                    phone: $("#form_phone").val(),
                    message: $("#form_message").val()
                }, function (data, status) {
                    /* Responses, check the data is correct if it is display
                       your message else enable the form elements and button
                       and display an error message */
                    console.log(data, status);
                    // Method to display your message, maybe something like this: $(".messages").html("<h1>your messages</h1>");
                });
            });
        });
    </script>
    

    这应该可以在不需要更改您的 PHP 脚本的情况下工作。

    【讨论】:

    • 嗨 y0hami。恐怕我仍然被重定向到一个新页面,并显示“联系表单已成功提交。谢谢,我会尽快回复您!”我认为这是由于 php 脚本中的某些内容导致页面重定向...
    • 您是否将 HTML 更改为上述 HTML?
    • 嗨。我现在更进一步(我最初将脚本放在单独的 .js 文件中并链接到它)但现在已将脚本直接放入 HTML 页面。我现在发现的是消息已发送,但是当用户单击提交时,按钮变得不可点击(如预期的那样),但没有消息或通知显示邮件已发送。
    • 如果您打开控制台(如果使用 Chrome,请单击 F12),一旦 ajax 请求完成,您将看到一条消息。此消息将是脚本页面的正文。您应该在脚本页面上返回一些 JSON 以指示您的请求是成功还是失败。这将在显示消息时为您提供帮助。消息也没有出现,因为我没有添加它我把它留给你,看看脚本中的 cmets。
    • 对不起,我是一个完整的甜甜圈,没有阅读说明推荐消息部分的脚本部分;我的错!它现在正在工作。非常感谢您的帮助!
    【解决方案2】:

    最好的方法是用 PHP 编写一个脚本来发送您的电子邮件(您可能需要修改它)。您需要更改表单以使用Ajax。这将允许您将 POST 数据发送到将发送电子邮件的脚本,但它也会给您一个响应,然后您可以在该响应上显示您发送的消息。

    【讨论】:

    • 谢谢。任何想法如何根据我提供的代码进行更改。我担心修改 PHP 脚本,因为我已经尝试了一些完全阻止它工作的更改!
    • 你在前端使用 jquery 吗?
    • 嗨,是的,我是 :)
    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2011-12-10
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多