2013-01-03 35 views
1

我在我的控制器中有這種情況,但我想知道爲什麼即使郵件發送成功,javascript警報也不會啓動?郵件發送後,爲什麼不彈出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並跳過警報彈出框,爲什麼?

+2

因爲腳本運行在客戶端,重定向運行在服務器端。所以重定向將在腳本執行之前觸發。 – Stu

回答

1

您可以通過將重定向的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>'; 
    } 

閃存郵件作爲已經阿德勒提到實現這一目標之前的JavaScript甚至發送到瀏覽器是一個很好的選擇,因此您可以在重定向頁面上獲取消息(以防在重定向之前顯示警報並不重要)

2

您應該使用setFlash來設置您要顯示的消息,並在您的視圖中顯示此消息,您應該檢查hasFlash和echo getFlash來編寫消息。