Форма обратной связи php + ajax
Ребят помогите. форма на php + ajax.
сам сайт: http://my-resume.xyz я испробовал уже всё что можно. и не выходит. на данный момент стоит :https://habrahabr.ru/sandbox/93363/ но форма не работает и + к тому же происходит перезагрузка.. ошибка в ajax'e 100%. HTML: <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form var form_data = $(this).serialize(); //собераем все данные из формы $.ajax({ type: "POST", //Метод отправки url: "mail-send.php", //путь до php фаила отправителя data: form_data, success: function() { //код в этом блоке выполняется при успешной отправке сообщения alert("Ваше сообщение отпрвлено!"); }); }); }); </script> </head> <body> <form id="form"> <div class="form-group row"> <label class="col-md-4 control-label k_field_name">ФИО</label> <div class="col-md-8"><input type="text" class="form-control" name="name1" id="name1" required></div> </div> <div class="form-group row"> <label class="col-md-4 control-label k_field_name">E-mail</label> <div class="col-md-8"><input type="text" class="form-control" name="email1" id="email1" required></div> </div> <div class="form-group row"> <label class="col-md-4 control-label k_field_name">Телефон</label> <div class="col-md-8"><input type="text" class="form-control" name="phone1" id="phone1" required></div> </div> <div class="form-group row"> <label class="col-md-4 control-label k_field_name">Город</label> <div class="col-md-8"><input type="text" class="form-control" name="country1" id="country1" required></div> </div> <div class="form-group row"> <label class="col-md-4 control-label k_field_name">Темы для выступлений в СМИ</label> <div class="col-md-8"><textarea class="form-control" name="mtext1" id="mtext1" required></textarea></div> </div> <div class="form-group row"> <label class="col-md-4 control-label k_field_name">Страница на Facebook</label> <div class="col-md-8"><input type="text" class="form-control" name="facelink1" id="facelink1" required></div> </div> <div class="form-group row"> <div class="col-md-8 col-md-offset-4"> <button type="submit" class="btn btn-primary pull-left">Отправить</button> <button type="button" class="md-close btn btn-primary pull-right">Закрыть</button> </div> </div> </form> </body> PHP (mail-send.php): <? if((isset($_POST['name1'])&&$_POST['name1']!="")&&(isset($_POST['email1'])&&$_POST['email1']!="")&&(isset($_POST['phone1'])&&$_POST['phone1']!="")&&(isset($_POST['country1'])&&$_POST['country1']!="")&&(isset($_POST['facelink1'])&&$_POST['facelink1']!="")&&(isset($_POST['mtext1'])&&$_POST['mtext1']!="")){ $to = 'web.pr@mail.ru'; $subject = 'Заявка на вступление в клуб экспертов'; $message = "<p><strong>Имя:</strong> $name1</p> \n<p><strong>E-mail:</strong> $email1</p> \n<p><strong>Телефон:</strong> $phone1</p> \n<p><strong>Город:</strong> $country1</p> \n<p><strong>Страница на Facebook:</strong> $facelink1</p> \n<p><strong>Темы для выступлений в СМИ:</strong> $mtext1</p>"; $headers = "Content-type: text/html; charset=utf-8 \r\n"; $headers .= "From: $name1 <$to>\r\n"; mail($to, $subject, $message, $headers); } ?> |
пишет ошибку: Uncaught SyntaxError: Unexpected token )
|
Еще пишут в какой строке. Вот и ищи эту строку.
|
Фигурную скобку надо добавить перед )
|
Цитата:
|
Проблема в ajax коде, а вот в js я не шарю.
php выполняет свою работу <?php if(!empty($_POST['name1'])&&!empty($_POST['email1'])&&!empty($_POST['phone1'])&&!empty($_POST['country1'])&&!empty($_POST['facelink1'])&&!empty($_POST['mtext1'])){ $to = 'web.pr@mail.ru'; $subject = 'Заявка на вступление в клуб экспертов'; $message = "<p><strong>Имя:</strong> $name1</p> \n<p><strong>E-mail:</strong> $email1</p> \n<p><strong>Телефон:</strong> $phone1</p> \n<p><strong>Город:</strong> $country1</p> \n<p><strong>Страница на Facebook:</strong> $facelink1</p> \n<p><strong>Темы для выступлений в СМИ:</strong> $mtext1</p>"; $headers = "Content-type: text/html; charset=utf-8 \r\n"; $headers .= "From: $name1 <$to>\r\n"; mail($to, $subject, $message, $headers); } ?> |
Нужно отменять естественную отправку формы:
//либо так $("#form").submit(function(e) { / e.prevetDefault(); ..... }); //либо так $("#form").submit(function(e) { ..... return false }); Цитата:
Content-type: text/html;, а в теле </p>\n<p> - нет в html никаких \r\n или \n, они игнорируются. !empty($_POST['name1'])&&!empty($_POST['email1']).... $var = ' '; echo !empty($var) ? 'Пусто' : 'Ок'; И будет ОК. Удалять нужно крайние пробелы всегда, прежде чем производить проверку, для одномерного массива это можно сделать обходом array_map(), для многомерного array_walk_recursive(). Методично проверять каждую переменную в портянке If не обязательно, можно проверить после trim наличие одного пустого поля. Отправляя сообщение как html, текст сообщения пользователя обязательно пропускать через htmlspecialchars. |
Говнокодеры митингуют за колхоз.
Нормально делается вообще просто. $form=array( 'name'=>array( 'caption'=>'Ваше имя', 'placeholder'=>'Не менее трех букаф', 'type'=>'text', 'required'=>3, 'class'=>'md8-blah-blah', 'id'=>'kakoe-to-id' ), 'phone'=>array( /* по тому же шаблону */ ); Теперь самоочевидно под такой массив пишется шаблон рендера формы. Затем самоочевидно по такому массиву проверяется то, что пришло с браузера. That's all folks. |
Часовой пояс GMT +3, время: 11:36. |