На лэнде расположено несколько форм. Возникла необходимость к одной из них добавить возможность прикрепить файл.
Сейчас без файла все работает так.
Пример формы:
<form action="" method="post">
<input type="hidden" class="type" value="zamer" name="type">
<input class="name" name="name" type="text" placeholder="Ваше имя">
<input class="tel" name="tel" type="text" minlength="13">
<input type="file" name="file" id="file">
<button>ОСТАВИТЬ ЗАЯВКУ</button>
</form>
Часть скрипта:
$('form').submit(function(e){
e.preventDefault();
var form_data = {
'name':$(".name", $(this)).val(),
'tel':$(".tel", $(this)).val(),
'square':$("#square", $(this)).val(),
'type':$(".type", $(this)).val(),
};
$.ajax({
type: "POST",
url: "mail.php",
data: form_data,
success: function(){
$('.modal').modal('hide');
setTimeout(function() {
$('.success').fadeToggle();
}, 1000);
setTimeout(function() {
$('.success').fadeToggle();
}, 2500);
},
error: function() {
alert("Произошла какая то ошибка!");
}
});
});
И, собственно, mail.php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['tel'])) {$phone = $_POST['tel'];}
if (isset($_POST['square'])) {$square = $_POST['square'];}
$to = "mail@mail.ru";/
$subject = "Сообщение с лендинга site.ru";
$subject = "=?utf-8?B?".base64_encode($subject)."?=";
$message = '
<h3>Сообщение с лендинга site.ru</h3>
<p>Площадь кухни:<b> '.$square.'</b></p>
<p>Имя отправителя:<b> '.$name.'</b></p>
<p>Телефон: <b>'.$phone.'</b></p>';
$headers .= 'from: mail2@mail.by' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
if(mail($to, $subject, $message, $headers)){
exit("Спасибо за заказ");
}
}
Что и где нужно написать, чтобы файл пришел на почту? Я сам не программист и все делал наугад.
Огромная просьба не давать ссылок. Напишите, пожалуйста, по возможности подробно, как для "полного чайника!
Пишу подробно:
var form_data = new FormData(this);
вместо
var form_data = {
'name':$(".name", $(this)).val(),
'tel':$(".tel", $(this)).val(),
'square':$("#square", $(this)).val(),
'type':$(".type", $(this)).val(),
};
PHP
$_FILES['file']['tmp_name']
Короче, натянул я ленд на MODx и сделал все формы через FormIt + AjaxForm. Все работает СУПЕР!
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости