Помогите сделать появление всплывающего окна после отправки формы?

12
D
На сайте с 01.09.2015
Offline
59
1969

<table width="90%" border=0 align="center" class="td_border">

<tr>

<td bgcolor='#2275AD'><p align="center" class="title">Для отправки сообщения автору сайта используйте следующую форму:</td>

</tr>

<tr align="center" valign="top">

<tr>

<td bgcolor='#F6F6F6'>

<form action='send.php' method='POST' name='form' target='_blank'>

<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше имя:<br>

<input name='name' type='text' size='30'></p>

<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваш e-mail:<br>

<input name='email' type='text' size='30'></p>

<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше сообщение:<br>

<textarea name='mess' rows='5' cols='50'></textarea>

<p><input name='submit' type='submit' style='font-family: Verdana; font-size: 8pt; color: #ffffff; background-color: #6699cc; font-weight: bold;' value='Отправить сообщение'>

<input name='Reset' type='reset' style='font-family: Verdana; font-size: 8pt; color: #ffffff; background-color: #6699cc; font-weight: bold;' value='Очистить форму'></p>

</form>

</td>

</tr>

</table>

<?php

$name = $_POST['name'];

$email = $_POST['email'];

$mess = $_POST['mess'];

$REMOTE_ADDR = $_POST['REMOTE_ADDR'];

if (isset ($name))

{

$name = substr($name,0,20); //Не может быть более 20 символов

if (empty($name))

{

echo "<center><b>Не указано имя !!!<p>";

echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";

exit;

}

}

else

{

$name = "не указано";

}

if (isset ($email))

{

$email = substr($email,0,20); //Не может быть более 20 символов

if (empty($email))

{

echo "<center><b>Не указан e-mail !!!<p>";

echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";

exit;

}

}

else

{

$email = "не указано";

}

if (isset ($mess))

{

$mess = substr($mess,0,1000); //Не может быть более 1000 символов

if (empty($mess))

{

echo "<center><b>Сообщение не написано !!!<p>";

echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";

exit;

}

}

else

{

$mess = "не указано";

}

$i = "не указано";

if ($name == $i AND $email == $i AND $mess == $i)

{

echo "Внимание! Произошла ошибка! Вы не заполнили поля сообщения!";

exit;

}

$to = "ваш@mail.ru";

$subject = "Сообщение с сайта";

$message = "Имя пославшего письмо: $name .\nЭлектронный адрес: $email\nСообщение: $mess .\nIP-адрес: $_SERVER[REMOTE_ADDR]";

mail ($to,$subject,$message,"Content-type:text/plain; charset = utf-8") or print "Не могу отправить письмо !!!";

echo "<center><b>Спасибо за отправку Вашего сообщения. <br><br> Для меня это очень важно! <br><br> В ближайшее время Вы обязательно получите ответ.";

exit;

?>

Как модернизировать код, чтобы после отправки сообщения появлялось всплывающее окно типа "Спасибо ваше сообщение отправлено", потом через пару секунд окно исчезло, а форма отчистилась?

dma84
На сайте с 21.04.2009
Offline
168
#1

AJAX вам в помощь

D
На сайте с 01.09.2015
Offline
59
#2

Кодом не поделитесь?

Gerga
На сайте с 02.08.2015
Offline
94
#3

Digistive, а вы чем поделитесь? :)

html:


<table width="90%" border=0 align="center" class="td_border">
<tr>
<td bgcolor='#2275AD'><p align="center" class="title">Для отправки сообщения автору сайта используйте следующую форму:</td>
</tr>
<tr align="center" valign="top">
<tr>
<td bgcolor='#F6F6F6'>
<form action='путь_к_обработчику' method='POST' name='form' target='_blank' class="ajax_form">
<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше имя:<br>
<input name='name' type='text' size='30'></p>
<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваш e-mail:<br>
<input name='email' type='text' size='30'></p>
<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше сообщение:<br>
<textarea name='mess' rows='5' cols='50'></textarea>
<p><input name='submit' type='submit' style='font-family: Verdana; font-size: 8pt; color: #ffffff; background-color: #6699cc; font-weight: bold;' value='Отправить сообщение'>
<input name='Reset' type='reset' style='font-family: Verdana; font-size: 8pt; color: #ffffff; background-color: #6699cc; font-weight: bold;' value='Очистить форму'></p>
</form>
</td>
</tr>
</table>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="путь_к_js"></script>

JS:


jQuery.noConflict();(function($) {$(function() {
var $body = $('body');
// ajax отправка форм
$body.on('submit', '.ajax_form', function() {
var $this = $(this);
jQuery.ajax({
type: ($this.attr('method') != 'undefined' ? $this.attr('method') : 'POST'),
url: $this.attr('action'),
dataType: "html",
data: new FormData($this[0]),
cache: false,
processData: false,
beforeSend: function(xhr) {
alert('Подождите пожалуйста, выполняется обработка...');
},
error: function (request, status, error) {
if ( status=='timeout' ) {
alert('Ошибка: Сервер не отвечает, попробуй ещё.');
} else {
alert('Ошибка при отправке формы...');
}
},
success: function(data){
alert( data )
},
complete: function(result){
alert( 'Работа закончена' );
}
});
return false;
});
})});

PHP обработчик:


<?php

$name = $_POST['name'];
$email = $_POST['email'];
$mess = $_POST['mess'];

$REMOTE_ADDR = $_POST['REMOTE_ADDR'];

if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}

if (isset ($email))
{
$email = substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Не указан e-mail !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$email = "не указано";
}

if (isset ($mess))
{
$mess = substr($mess,0,1000); //Не может быть более 1000 символов
if (empty($mess))
{
echo "<center><b>Сообщение не написано !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$mess = "не указано";
}

$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Внимание! Произошла ошибка! Вы не заполнили поля сообщения!";
exit;
}

$to = "ваш@mail.ru";
$subject = "Сообщение с сайта";
$message = "Имя пославшего письмо: $name .\nЭлектронный адрес: $email\nСообщение: $mess .\nIP-адрес: $_SERVER[REMOTE_ADDR]";
mail ($to,$subject,$message,"Content-type:text/plain; charset = utf-8") or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо за отправку Вашего сообщения. <br><br> Для меня это очень важно! <br><br> В ближайшее время Вы обязательно получите ответ.";
exit;
?>

Вместо alert ставьте текст в какой-то тег.

D
На сайте с 01.09.2015
Offline
59
#4

Ничего не изменилось. Всплывающего окна нет, по прежнему перебрасывает на send.php

Gerga
На сайте с 02.08.2015
Offline
94
#5

Digistive, значит у вас есть JS ошибки, смотрите консоль.

M
На сайте с 04.10.2011
Offline
90
#6
Gerga:
значит у вас есть JS ошибки, смотрите консоль.

Скорее не ошибки, а обработчик submit не туда "повешен".

Отрабатывает стандартный action формы

Сдается, обращаться скайп avdesk-it-kmm Верстка, кодинг - контакты в профиле... VPS от 5€ (https://gmhost.com.ua/?partner=10255)
Gerga
На сайте с 02.08.2015
Offline
94
#7

mmkulikov, Все куда надо повешено :)

D
На сайте с 01.09.2015
Offline
59
#8
Gerga:
Digistive, значит у вас есть JS ошибки, смотрите консоль.

Можете снова закинуть js код, просто в сообщение, не вставляя его между тегами

, а то чего то не корректно отображает
Gerga
На сайте с 02.08.2015
Offline
94
#9

Digistive, меняйте "***91;" на "[" , а "***93;" на "]" соответственно.

D
На сайте с 01.09.2015
Offline
59
#10
Gerga:
Digistive, меняйте "***91;" на "[" , а "***93;" на "]" соответственно.

То есть строчка должна быть такой?

data: new FormData($this[]),

Но все равно никакого окна нет. Перекидывает на страницу php

А не подскажете еще кое что. Ставлю код редиректа, чтобы после станицы с сообщением "Спасибо отправлено" перекидывало обратно на главную. Но получается, что после отправки сообщения кидает на новое окно, в итоге имею два открытых окна главной, как сделать, чтобы все происходило в одном окне?

echo "<meta http-equiv=\"refresh\" content=\"0;url=" . $_SERVER['HTTP_REFERER'] . "\">";

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий