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 で確認し、getFlashエコーし​​てメッセージを書き込む必要があります。

于 2013-01-03T18:42:44.363 に答える
1

リダイレクトの前にアラートを表示したい場合は、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>'; 
    }

Adler が既に述べたように、フラッシュ メッセージは適切なオプションです。リダイレクトされたページでメッセージを取得できます (リダイレクトの前にアラートを表示することが重要でない場合)。

于 2013-01-04T11:56:03.553 に答える