Снова 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, время: 00:59. |