2013-05-07 4 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», если это можно решить.

ответ

0

Два потока я могу думать о

Non-AJAX

Подайте форму на сервер, как вы в настоящее время делают. Затем при изменении страницы успеха отрисуйте страницу с помощью модального показа. Предоставьте кнопке закрытия какой-либо вид, который не отображает на экране, или удаляет его из DOM. В этом подходе вы можете обрабатывать визуализацию пустой формы с помощью PHP. Это более традиционная парадигма.

AJAX

Для этого добавьте обработчик событий для отправки формы. Отправьте форму через AJAX, но не сразу очищайте поля формы. Дождитесь ответа с сервера. Если сервер обнаруживает ошибку проверки в представлении формы, например, вам нужно будет обновить форму, чтобы отразить эту ошибку. Если сервер возвращает успешный ответ, очистите поля формы с помощью Javascript и покажите модальность.

+0

Надеюсь, это немного полезно, но это очень общее! – quickshiftin

+0

Я (думаю, по крайней мере) Я понимаю, о чем вы говорите, не-аякс. После успешной отправки (используя заголовок на php) показать ту же страницу, но добавить в модальный всплывающее окно? это также будет очищено, так как я просто просматриваю исходную страницу. С помощью ajax-метода я не уверен в том, как это сделать. Я думаю (bc of) часть 2 моего вопроса, что мне может понадобиться использовать ajax. – Jordy

+0

Да, я бы сказал, если вы не очень хорошо знакомы с AJAX, то первый подход будет намного легче понять и реализовать. Вы просто показываете модальность, когда страница перезагружается, если форма была успешно проверена и отправлена ​​почта, и предоставить простой обработчик JS-кликов, чтобы у них была кнопка закрытия на модальном уровне. – quickshiftin