Прошу помощи с формой обратной связи
Дорогие форумчане, прошу помощи.
Есть форма обратной связи (код ниже), все работает, но я добавил в нее еще одно поле " <input type="text" placeholder="Ваше сообщение" name="mesg" id="mesg" class="input_text"/>" и никак не могу понять, как его прописать в файле параметров и feedback.php, чтобы сообщение приходило вместе с этим полем. Сейчас мне приходит сообщение в следующем виде: Адрес моего сайта name : имя отправителя фидбэка phone: номер отправителя фидбэка *(вот от этих "name:" и "phone:" я бы тоже хотел избавиться) Мне необходимо получить следующий вид сообщения: Адрес моего сайта Имя отправителя фидбэка Номер отправителя фидбэка <br> Сообщение отправителя Я новичок, а тут какой-то странный код обратки :blink: , никак не могу понять что откуда берется и куда отправляется. Буду очень благодарен! Далее код:
<form method="post" id="form-feedback">
<input type="text" placeholder="Ваше имя" name="name" id="name" class="input_text"/>
<div id="bthrow_error_name"></div>
<input type="text" placeholder="Контактный телефон" name="phone" id="phone" class="input_text"/>
<div id="bthrow_error_phone"></div>
<input type="text" placeholder="Ваше сообщение" name="mesg" id="mesg" class="input_text"/>
<input class="button" type="submit" value="Отправить заявку" />
<div class="throw_error"></div>
</form>
Для нее есть следующие параметры:
$("#form-feedback").submit(function(event) {
if ($('#name').val() == "")
{
$('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
}
else if
($('#phone').val() == "")
{
$('#bthrow_error_name').empty();
$('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
}
else
{
var postForm = {
'name' : $('#name').val(),
'phone' : $('#phone').val()
};
$.ajax({
type : 'POST',
url : 'feedback.php',
data : postForm,
dataType : 'json',
success : function(data)
{
if (!data.success)
{
if (data.errors.name)
{
$('.throw_error').fadeIn(1000).html(data.errors.name);
}
}
else
{
$('#form-feedback').fadeIn(1000).html('<p>' + data.posted + '</p>');
}
}
});
}
event.preventDefault();
});
А также
$(function() {
$('#popupbutton').fancybox({
'padding': 37,
'overlayOpacity': 0.87,
'overlayColor': '#fff',
'transitionIn': 'none',
'transitionOut': 'none',
'titlePosition': 'inside',
'centerOnScroll': true,
'maxWidth': 400,
'minHeight': 310
});
$('#phone').mask('0 (000) 000-00-00');
$("#form-feedback").submit(function(event) {
if ($('#name').val() == "")
{
$('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
}
else if ($('#phone').val() == "")
{
$('#bthrow_error_name').empty();
$('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
}
else if ($('#mesg').val() == "")
{
$('#bthrow_error_name').empty();
}
else
{
var postForm = {
'name' : $('#name').val(),
'phone' : $('#phone').val()
'mesg' : $('#mesg').val()
};
$.ajax({
type : 'POST',
url : 'feedback.php',
data : postForm,
dataType : 'json',
success : function(data)
{
if (!data.success)
{
if (data.errors.name)
{
$('.throw_error').fadeIn(1000).html(data.errors.name);
}
}
else
{
$('#form-feedback').fadeIn(1000).html('<p>' + data.posted + '</p>');
}
}
});
}
event.preventDefault();
});
});
и php:
<?php
$errors = array();
$form_data = array();
if ($_POST['name'] == "")
{
$errors['name'] = 'Введите Ваше имя';
}
if ($_POST['phone'] == "")
{
$errors['name'] = 'Введите Ваш телефон';
}
if (!empty($errors))
{
$form_data['success'] = false;
$form_data['errors'] = $errors;
}
else
{
$message = "<h1>Заявка с сайта ".$_SERVER['HTTP_HOST']."</h1>";
foreach($_POST as $k => $v)
{
$message .= $k.": ".$v."<br />";
}
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf8' . "\r\n";
if (mail('xdd24@yandex.ru', 'Заявка с сайта '.$_SERVER['HTTP_HOST'], $message, $headers))
{
$form_data['success'] = true;
$form_data['posted'] = 'Наши менеджеры свяжутся с Вами в ближайшее время';
}
else
{
$errors['name'] = 'Ошибка отправки письма';
}
}
echo json_encode($form_data);
?>
|
Зачем отправлять форму из двух обработчиков?
|
Цитата:
как тут должно быть? |
Цитата:
Строка 18, код 2 - $("#form-feedback").submit(function(event) ... отправка формы в плагине fancybox. |
Цитата:
|
А что именно подсказать? Добавляйте обработку на сервере и добавленного поля, оно будет под ключом $_POST['mesg'].
|
Цитата:
Я пытался добавлять так, но ничего не получалось И не вижу где тут убрать надписи "name" и "phone", которые приходят в сообщении |
Цитата:
я понимаю, что тут где-то две строчки всего лишь дописать надо, но не понимаю куда и какие |
В обработчике ancybox в строках 20-33 находятся условия такой проверки полей. Только нужно добавить же вывод сообщения и для поле mesg, если оно не заполнено, то тоже типа
$('#bthrow_error_mesg').fadeIn(1000).html('Заполните....');
в строку 33, и добавив в форму <div id="bthrow_error_mesg"></div> Ну и на сервере
if ($_POST['mesg'] == "")
{
$errors['mesg'] = 'Заполните ... ';
}
Только не понятно, зачем возвращать на клиента сообщения о не заполнении полей, если клиент и сам их с успехом формирует, достаточно возвращать наличие (признак) ошибки в поле. И так не проверяют if ($_POST['mesg'] == ""), так как пробел уже не равен пустой строке, но в тоже время это ничто. Нужно убирать крайние пробелы, и лишь затем проверять пустая ли строка:
$_POST = array_map('trim', $_POST);
//А теперь можно и
if ($_POST['name'] == "")
.....
|
Цитата:
Получается, так? Код: HTML: <h2>Обратная связь</h2> <div class="comment"></div> <form method="post" id="form-feedback" > <input type="text" placeholder="Ваше имя" name="name" id="name" class="input_text"/> <div id="bthrow_error_name"></div> <br> <input type="text" placeholder="Контактный телефон" name="phone" id="phone" class="input_text"/> <div id="bthrow_error_phone"></div> <input class="button submit_callback_button_1" type="submit" value="Отправить заявку" /> <div id="bthrow_error_mesg"></div> </form> <span class="under-form"></span> JS:
$('#phone').mask('0 (000) 000-00-00');
$("#form-feedback").submit(function(event) {
if ($('#name').val() == "")
{
$('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
}
else if
($('#phone').val() == "")
{
$('#bthrow_error_name').empty();
$('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
}
else if
($('#mesg').val() =="")
{
$('#bthrow_error_mesg').fadeIn(1000).html('Пожалуйста, напишите сообщение');
}
else
{
var postForm = {
'name' : $('#name').val(),
'phone' : $('#phone').val()
'mesg' : $('#mesg').val()
};
$.ajax({
type : 'POST',
url : 'feedback.php',
data : postForm,
dataType : 'json',
success : function(data)
{
if (!data.success)
{
if (data.errors.name)
{
$('.throw_error').fadeIn(1000).html(data.errors.name);
}
}
else
{
$('#form-feedback').fadeIn(1000).html('<p>' + data.posted + '</p>');
}
}
});
}
event.preventDefault();
});
PHP:
<?php
$errors = array();
$form_data = array();
if ($_POST['name'] == "")
{
$errors['name'] = 'Введите Ваше имя';
}
if ($_POST['phone'] == "")
{
$errors['name'] = 'Введите Ваш телефон';
}
if ($_POST['mesg'] == "")
{
$errors['mesg'] = 'Пожалуйста, напишите сообщение';
}
if (!empty($errors))
{
$form_data['success'] = false;
$form_data['errors'] = $errors;
}
else
{
$message = "<h1>Заявка с сайта ".$_SERVER['HTTP_HOST']."</h1>";
foreach($_POST as $k => $v)
{
$message .= $k.": ".$v."<br />";
}
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf8' . "\r\n";
if (mail('xdd24@yandex.ru', 'Заявка с сайта '.$_SERVER['HTTP_HOST'], $message, $headers))
{
$form_data['success'] = true;
$form_data['posted'] = 'Благодарим за обращение! Наши менеджеры свяжутся с Вами в ближайшее время';
}
else
{
$errors['name'] = 'Ошибка отправки письма';
}
}
echo json_encode($form_data);
?>
|
| Часовой пояс GMT +3, время: 08:34. |