1

我的控制器中有这种情况,但我想知道为什么即使邮件发送成功,javascript 警报也不会启动?

        if(mail($to,$sub,$body,$headers)){
            echo '<script>alert("Thank you for your enquiry.\nWe will get back to you soon\n");</script>';
            $this->redirect(Yii::app()->homeUrl);
        }

它只是重定向到 homeUrl 并跳过警报弹出框,为什么?

4

2 回答 2

2

您应该使用setFlash设置要显示的消息并在视图中显示此消息,您应该检查hasFlash和 echo getFlash以写入消息。

于 2013-01-03T18:42:44.363 回答
1

如果您想在重定向之前显示警报,您可以通过在 javascript 甚至发送到浏览器之前将重定向放在 javascript 中作为 PHP 重定向来实现这一点

if(mail($to,$sub,$body,$headers)){
        echo '<script>
        alert("Thank you for your enquiry.\nWe will get back to you soon\n");
        location.replace('.Yii::app()->homeUrl.');
       </script>'; 
    }

Adler 已经提到的闪存消息是一个不错的选择,因此您可以在重定向页面上获取消息(以防在重定向之前显示警报并不重要)

于 2013-01-04T11:56:03.553 回答