Снова email, снова...
Здравствуйте, попросили сделать отправку email с сайта. И если на странице одна форма, то всё работает. Но формы на одной странице 2 и они имею разные поля. Отправка, почему то, не работает :cray:
<form class="form" id="free-form" style="width:555px;" action="#" method="post" onsubmit="okSend()"> <div class="controls"> <input type="text" name="trial_name" id="trial_name" class="form-control" placeholder="Имя" required> </div> <div class="controls"> <input name="trial_email" id="trial_email" type="text" class="form-control" placeholder="Email" required> </div> <div class="controls send"> <button type="submit" class="btn btn-lg">Получить пробный урок</button> </div> </form> под формой сразу javascript
<script type="text/javascript">
$.ajax({
type: "POST",
url: "sendtrial.php",
data: document.forms["free-form"].serialize(),
success: document.forms.free-form.reset();
}
});
</script>
далее по коду другая форма с другим id и другими полями. Соответственно, там другой файл php. Однако, ничего не отправляется :cray: Подзреваю, что это страшный быдлокод. Подскажите, как сделать правильно? Спасибо за понимание. Искал и ничего конкретного не нашел. Всё равно что то не получалось :-E А ещё не знаю куда поставить document.forms.free-form.reset();, что бы форма после отправки очистилась |
Вставить на страницу:
$(document).ready(function() {
$('form').on('submit', function() {
$.ajax({
type: "POST",
url: this.action,
data: $(this).serialize()
});
this.reset();
return false;
});
});
Формы будут отправляться на тот скрипт, который указан в атрибуте action тега form. И что за функция okSend в onsubmit стоит? P.S. Этот код подходит только если на странице нет и не планируется других форм, кроме отправки мыла. Если есть другие формы, то выборку делайте по id. |
okSend просто выводит alert о том, что письмо отправлено...
|
это вставить где то внизу страницы?
На форме ещё есть кнопки paypal, а они как раз имеют формат <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"> .... </form> |
Цитата:
Цитата:
$(document).ready(function() {
$('#form_id1, #form_id2').on('submit', function() {
var form = this;
$.ajax({
type: "POST",
url: this.action,
data: $(this).serialize(),
success: function() {
alert('успех');
form.reset();
},
error: function() {
alert('ошибка');
}
});
return false;
});
});
form_id1 и form_id2 заменить на id форм. Символ "#" не трогать, запятую тоже. Вставлять в любое место страницы (в тег script естетсвенно), код сработает только после загрузки документа. |
выводится "успех", но письмо не приходит. Хотя сами скрипты php рабочие и находятся в том же каталоге, что и страница index.hml
Вот один из них:
<?php
if($_POST){
$to = "mymail@m.mail";
$c_name = trim(strip_tags(stripslashes($_POST['trial_name'])));
$c_mail = trim(strip_tags(stripslashes($_POST['trial_email'])));
if (c_name!="" && c_mail!="") {
$message = "
<html>
<body>
<b>Новое сообщение!</b><br/>
<b>Имя:</b> {$c_name}<br/>
<b>E-mail:</b> {$c_mail}<br/>
</body>
</html>";
$subject = "Пробный урок";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: {$c_mail}\r\n";
mail($to, $subject, $message, $headers);
}
?>
|
Закрывающей скобки для второго if в скрипте нет...
|
:dance:
Вот я голова соломенная. Теперь работает, спасибо! Теперь осталось добавить проверки и всё. Спасибо большое! |
| Часовой пояс GMT +3, время: 22:45. |