Yii 为什么javascript弹出窗口没有';邮件发送后,您是否不出现?

Yii 为什么javascript弹出窗口没有';邮件发送后,您是否不出现?,yii,Yii,我的控制器中有这种情况,但我想知道为什么即使邮件成功发送,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()

我的控制器中有这种情况,但我想知道为什么即使邮件成功发送,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);
        }
if(邮件($to、$sub、$body、$headers)){
echo'alert(“感谢您的询问。\n我们很快会回复您的\n”);
$this->redirect(Yii::app()->homeUrl);
}

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

您应该使用它设置要显示的消息并在视图中显示此消息,您应该检查并回显以编写消息。

如果您想在重定向前显示警报,可以在javascript发送到浏览器之前,将重定向作为PHP重定向放入javascript中,以实现此目的

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>'; 
    }
if(邮件($to、$sub、$body、$headers)){
回声'
提醒(“感谢您的询问。\n我们很快会回复您的\n”);
location.replace('.Yii::app()->homeUrl');
'; 
}

Adler已经提到的flash messages是一个很好的选项,因此您可以在重定向页面上获取消息(如果在重定向之前显示警报并不重要)

因为脚本在客户端运行,所以重定向在服务器端运行。因此,重定向将在脚本执行之前触发。