Показать сообщение отдельно
  #1 (permalink)  
Старый 17.07.2018, 10:24
Аспирант
Отправить личное сообщение для SkyRewir Посмотреть профиль Найти все сообщения от SkyRewir
 
Регистрация: 07.06.2017
Сообщений: 47

Отдать файл на загрузку с помощью ajax
Добрый день, Форум!
Помогите пожалуйста найти ошибку в скрипте и по возможности её исправить

На сайте есть форма
<form action="PHP/email.php" method="POST" id="form1">
    <input type="text" name="name" placeholder="Ваше имя">
    <input type="phone" name="phone" placeholder="Ваш телефон">
    <input type="email" name="email" placeholder="Ваша почта">
    <button class="buttonIntroduction">Получить консультацию</button>
</form>

К форме сделан AJAX
$("#form1").submit(function(event){
		event.preventDefault();
		$.ajax({
			url: $(this).attr('action'),
			type: $(this).attr('method'),
			data: {
				file: true,
				new FormData(this)
			},
			contentType: false,
			cache: false,
			success: function(){
				$('#thanks').css('display', 'flex');
				setTimeout(function() {
					$("#modal").hide('slow'); 
					$('#thanks').css('display', 'none');
				}, 2000);	
			}
		});
	});

И php скрипт, который отправляет письмо на почту с данными формы и (должен отдать клиенту PDF документ на загрузку), но что-то идет не так и файл не отдаётся
<?php
	$name = trim($_POST['name']);
	$phone = trim($_POST['phone']);
	$email = trim($_POST['email']);
	$file = trim($_POST['file']);

	$to = "pavlov.d1994@inbox.ru";
	$subject = "Заявка с сайта";
	$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
	$mail = "Пришла заявка с сайта Alicense.kz\n".
	"Имя клиента: $name\n".
	"Телефон для связи с клиентом: $phone\n".
	"Почта клиента: $email\n";
	"Перезвонить для уточнения деталей.";
	$headers = 'From: info@alicense.kz' . "\r\n" .
	'Reply-To: info@alicense.kz' . "\r\n" .
	'X-Mailer: PHP/' . phpversion();
	$send = mail($to, $subject, $mail, $headers);
	
	if ($file != FALSE) {
	    $file = $_SERVER['DOCUMENT_ROOT'].'/Content/Прайс_лист.pdf';
	    header('Content-Description: File Transfer');
	    header('Content-Type: application/octet-stream');
	    header('Content-Disposition: attachment; filename="'.basename($file).'"');
	    header('Expires: 0');
	    header('Cache-Control: must-revalidate');
	    header('Pragma: public');
	    header('Content-Length: ' . filesize($file));
	    readfile($file);
	}
?>

Страница в браузере не должна перезагружаться, а меня перекидывает на страницу со скриптом email.php и выдаёт ошибку "Notice: Undefined index: file", что переменная $file не определенна

Всем спасибо за ответы и помощь!
Ответить с цитированием