PHPMailer - 重定向后显示成功消息

时间:2015-02-04 21:12:09

标签: laravel-4

我使用Laravel4构建一个非常简单的应用程序,到目前为止我已设法设置PHPMailer以使用联系表单,用户填写他们的详细信息并向我发送电子邮件,正常的东西,一切正常。 用户成功发送电子邮件后,将通过

重定向到主页
if($m->send()) {
    header('Location: /path/to/home/');
    die();
}

现在我需要的是如果用户在成功发送电子邮件后被重定向,则会显示在主页顶部的成功消息。

我的主页上有一个.success课程的div,绝对位于视野之外,Y值为负。 我试着在$m->send()之后将其拉下来,如此:

    if($m->send()) {
        header('Location: /path/to/home/');
        echo "<script type='text/javascript'>
                $('.success').animate({
                   top: 0
                }, 2000);
              </script>";
        die();
    }

但它没有用。事实上,在header()之后我没有回应任何影响。

我该怎么办?

谢谢你们!

2 个答案:

答案 0 :(得分:0)

这是简单的HTTP - 当你设置Location标题时,它告诉浏览器离开你所在的页面并转到其他地方 - 之后发生的任何事情(就像那个小JS片段)永远不会到达浏览器。您需要将该代码段放在要重定向到的页面上,而不是放在此页面上。

答案 1 :(得分:0)

我意识到在实际链接jquery lib之前你不能在文档上使用jquery,我解决了这个问题。

所以,在我的phpmailer配置文件中,我在使用$_SESSION['success'] = true重定向之前设置header('Location: /path/to/home/');,然后在主页上,我想要显示成功消息的页面,我添加了这段代码(在链接jQuery库之后):

    <?php
        if(isset($_SESSION['success']) && $_SESSION['success'] == true ) {
    ?>
        <script type='text/javascript'> $('.success').animate({top : 0}, 'normal').delay(3000).animate({top : -57}, 'normal');</script>
    <?php
        } else {
            $_SESSION['success'] = false;
        }
    ?>

我不知道这是不是一个好习惯,但确实有效。

我也必须在我的主页上session_start();(显然)。

希望这可以帮助处于相同情况的任何人!