Даже var_damp($_POST) NULL
пытаюсь отправлять файлы через ajax. Если contentType: false то $_POST пустой в противном случае работает. Но чтобы файлы отправлять нужен false
$(document).ready(function () {
$("form").submit(function () {
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
cache: false,
processData: false,
contentType: false,
url: 'mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод текста результата отправки
$(formNm).html(data);
},
error: function (jqXHR, text, error) {
// Вывод текста ошибки отправки
$(formNm).html(error);
}
});
return false;
});
});
<?php
if (true) {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
//var_dump($_POST['formData']);
$sourcePath = $_FILES['feedbackFile']['tmp_name'];
if($sourcePath){
// Storing source path of the file in a variable
$targetPath = $_SERVER['DOCUMENT_ROOT']."/upload/".$_FILES['feedbackFile']['name']; // Target path where file is to be stored
move_uploaded_file($sourcePath,$targetPath) ; // Moving Uploaded file
}
$to = "info@ya.ru"; /*Укажите адрес, га который должно приходить письмо*/
$sendfrom = "info@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$subject = "$formData";
$message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo '<center><p class="success">Спасибо за отправку вашего сообщения!</p></center>';
}
else
{
echo '<center><p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p></center>';
}
} else {
http_response_code(403);
echo "Попробуйте еще раз";
}
var_dump($_POST);
?>
<form id="form">
<h2 id="modal1Title">Оставьте ваши контактные данные и наш консультант свяжется <br>с вами</h2>
<input type="text" class="putName" name="name" id="name" placeholder="Ваше ваше имя" required>
<input type="tel" name="phone" id="phone" class="putPhone" placeholder="Введите номер телефона" required>
<input type="file" id="feedbackFile" name="feedbackFile" />
<input type="submit" name="submit" class="btn" value="ОТПРАВИТЬ">
<input type="hidden" name="formData" value="Заявка с сайта">
<p style="margin:0;"><a style="font-size:12px; text-align:center; color:rgba(255, 255, 255, .3);" href="http://smartlanding.biz/ajax-forma-v-modalnom-okne.html">Хочу такую форму на свой сайт</a></p>
</form>