Форма обратной связи 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, время: 08:34. |