【问题标题】:How to output "Thanks" text, instead of opening a separate URL using formmail.php如何输出“谢谢”文本,而不是使用 formmail.php 打开单独的 URL
【发布时间】:2014-10-20 19:57:28
【问题描述】:

这是my site,我正在处理联系页面。

我正在使用 formmail.php 作为联系表单 (http://www.tectite.com/)

当用户提交表单时,我希望它说“谢谢,您的消息已发送”。但我希望此文本显示在表单所在的页面上 - 不要打开单独的 URL。

已经有一种方法可以通过以下方式重定向到单独的页面:

    <input type="hidden" name="good_url" value="http://yoursite.com/thanks.htm" />

但是,由于我的网站是一个单页滚动网站,我想避免离开。

【问题讨论】:

    标签: php forms contact formmail


    【解决方案1】:

    你可以简单地使用 ajax 功能来做到这一点

    $.ajax({
                    url: "page which you want to call on action",
                    data: $( "form" ).serialize(),
                    type: 'POST',
                    async: false,
                    success: function(responseObject) {
                       // $("#hiddendiv").show(); // OR
                       // $("#hiddendiv").html("thanks message");
                    }
                });
    

    【讨论】:

    • $.post() 是简写。此外,建议在屏幕上显示“正在加载”消息,否则当 AJAX 在后台执行时用户将不知道发生了什么。
    • 我刚刚给出了我们如何去做的想法。另外我认为@user2419684 是一名程序员,他可以管理用户界面的显示方式。检查stackoverflow.com/a/12820123/165370
    • 我已经尝试过这个和下面的@Kanantuteja 解决方案,但它仍然显示默认的formmail页面 - 我该如何覆盖这个?
    • 您需要提供更多详细信息(表单邮件页面或发送页面)以便更好地帮助您
    【解决方案2】:

    试试这个 ajax

      $.ajax({
              type: "POST",
              url: "send.php",
              data: $(form).serialize(),
              timeout: 3000,
              success: function() {
                $("#contactForm").hide();
                $('#divContactFrm').html("<div id='divSuccessMsg'></div>");
                $('#divSuccessMsg').html("Thank you!")
                .hide()
                .fadeIn(1500, function() { $('#divSuccessMsg'); 
            });
              }
    

    【讨论】:

    • 最后一个fadeIn() 回调部分看起来很奇怪。回调函数可以留空。
    • 由你决定是否添加fadeIn()来隐藏div,否则使用上面的代码显示感谢消息。
    【解决方案3】:

    @Abhishek 回答说,您可以使用 Ajax。或执行以下操作。

    if(isset($_POST['submit']))
    {
       //Your code for mailing
       header('location:formmail.php?message=set');
    }
    

    然后在你要显示消息的地方

    if(isset($message))
    {
       echo "Thanks";
    }
    

    【讨论】:

    • 嗯?如果页面没有重新加载,PHP isset() 将不会再次检查。另外,不要忘记在header('Location: url'); 后面加上exit()。标头语法也错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2021-12-17
    • 2013-08-09
    • 2013-03-11
    • 2020-04-29
    • 2017-01-21
    相关资源
    最近更新 更多