2013-05-07 82 views
0

我有一個PHP郵件表單(工作正常),目前重定向到一個感謝頁面。我正在修改網站,並希望(而不是重定向到另一個網頁)(成功提交後)出現模式彈出窗口並說聲謝謝。我還需要清除表格,因爲用戶會留在當前頁面上。我搜索了(在stackoverflow和網絡搜索)的解決方案。我發現了一些「想法」,但沒有任何工作。我目前在網站上使用模態彈出窗口(自改版以來),並且通常瞭解它們的工作原理。我也對PHP有一個基本的瞭解。我在想如果它可能(?)在頭中有一些類型的JavaScript來調用模式彈出。我也看到它需要成爲AJAX的想法。使用模態彈出窗口的PHP重定向

任何幫助將不勝感激。

這裏是我的HTML表單:

<p class="formrequired">Required fields are marked with an asterisk(*)</p> 
<form action="form.php" method="post"> 
    <ol class="forms"> 
    <li><label for="first_name">*First Name</label><input type="text" name="first_name"/></li> 
    <li><label for="last_name">Last Name</label><input type="text" name="last_name"/></li> 
    <li><label for="email">*Email</label><input type="text" name="email"/></li> 
    <li><label for="comment">*Message</label><textarea name="comment"cols="45" rows="5"></textarea></li> 
    <li><input type="submit" value="Submit" class="submit"/> 
    </ol> 
</form> 

和我的PHP:

<?php 

$myemail = "[email protected]"; 

$first_name = check_input($_POST['first_name'], "Please enter your first name"); 
$last_name = check_input($_POST['last_name']); 
$email  = check_input($_POST['email']); 
$comment = check_input($_POST['comment'], "Please enter your message"); 


if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) 
{ 
    show_error("E-mail address is not a valid email address"); 
} 

$subject="New form submitted on Napoleonville Fire"; 

$message = "Hello Jordy! 

Your contact form has been submitted by: 

First Name: $first_name 
Last Name: $last_name 

E-mail: $email 

They left the following message: 

$comment 

End of message. 
"; 

mail($myemail, $subject, $message); 

header('Location: thankyou.html'); 
exit(); 


function check_input($data, $problem='') 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    if ($problem && strlen($data) == 0) 
    { 
     show_error($problem); 
    } 
    return $data; 
} 

function show_error($myError) 
{ 
?> 
    <html> 
    <body> 

    <b>Please correct the following error:</b><br /> 
    <?php echo $myError; ?> 

    </body> 
    </html> 
<?php 
exit(); 
} 


?> 

再次感謝您的任何和所有幫助。

如果能解決這個問題,我會有一個「第2部分」。我能想到

非Ajax

回答

0

兩個流提交表單到服務器,你目前做的。然後,在重新顯示成功頁面時,使用模式顯示呈現頁面。提供某種關閉按鈕,該關閉按鈕不會顯示任何內容,或者完全從DOM中刪除它。在這種方法中,您可以使用PHP處理空表單。這是更傳統的範例。

AJAX

對於這一點,添加事件處理程序的形式提交。通過AJAX提交表單,但不要立即清除表單域。等待服務器的響應。如果服務器在表單提交中發現驗證錯誤,例如您將不得不更新表單以反映此錯誤。如果服務器返回成功響應,請使用Javascript清除表單域並顯示模式。

+0

希望這有些有用,但它是非常一般的! – quickshiftin 2013-05-07 04:45:54

+0

我(至少在想)我在非Ajax方式中理解你在說什麼。成功提交(在php上使用標題)後顯示相同的頁面,但添加模式彈出框?這也將有形式清除,因爲我只是重新顯示原始頁面。用ajax的方式,我不確定如何實現這一點。我在想我的問題的第二部分(bc),我可能需要使用ajax的方式。 – Jordy 2013-05-08 23:15:11

+0

是的,我想說如果你對AJAX不太熟悉,第一種方法將更容易掌握和實現。如果表單驗證成功且郵件已發送,則只需在頁面重新加載時顯示模式,並提供一個簡單的JS單擊處理程序,以便它們可以在模式上具有關閉按鈕。 – quickshiftin 2013-05-09 03:40:49