2016-03-06 59 views
0

我在我的網站上有一個contact-us頁面。 當用戶提交表單時,它將轉到mailIt.php並進行必要的發送該郵件。發送後它將刷新代碼。在PHP中調用javaScript警報後重新加載頁面將不起作用

由於我想添加通知有點事情來通知用戶郵件已發送,我更改了代碼以在頁面中顯示一個javaScript警報。但在此之後,將顯示警報並且頁面加載將停止,並且它將保留在mailIt.php頁面(使用inout文本)。

@mail($email_to, $email_subject, $email_message, $headers); 
?> 
    <script type="text/javascript"> 
     alert("Thank you for contacting us!"); 
    </script> 
<?php 
echo("in"); 
header('Location: /contact_us.html'); 
echo("out"); 

我說的唯一的部分是,

?> 
    <script type="text/javascript"> 
     alert("Thank you for contacting us. We will be in touch with you very soon !"); 
    </script> 
<?php 

這究竟是爲什麼?我怎樣才能防止呢?

回答

0

記住header()函數必須被髮送 http://php.net/manual/en/function.header.php

之前的任何實際輸出要發送的JavaScript彈出調用header()函數之前被調用。

一個解決辦法是打印的JavaScript彈出,然後加載./contact_us.html的內容,並打印到您的網頁,就像這樣:

echo '<script type="text/javascript"> 
alert("Thank you for contacting us!"); 
</script>'; 

$html = file_get_contents('./contact_us.html'); 
echo $html; 

如果你想以確保郵件已發送,您應該將mail()函數放在if()聲明中。 mail()返回一個布爾值:如果成功則返回true,否則返回false。

if(mail($email_to, $email_subject, $email_message, $headers)){ 
    echo '<script type="text/javascript"> 
    alert("Thank you for contacting us!"); 
    </script>'; 

    $html = file_get_contents('./contact_us.html'); 
    echo $html; 
} 
else{ 
    echo 'Oops, something went wrong!'; 
} 
相關問題