Iframe с формой отправки в Fancybox не публикует данные

Я пытаюсь отправить форму внутри fancybox. Это простая форма для связи с нами с именем, адресом электронной почты и кнопкой отправки.
Я установил для fancybox значение iframe, и он загружает файл «download.php». Вот что имеет «download.php»:

    <form action="sendmail.php" type="post">
<fieldset style="width: 300px;">
<legend>Please fill out completely:</legend>
<span style="color: red;">* required field</span>
<br>
<label for="txtName">Name:</label><br>
<input type="text" id="txtName" style="width: 200px;" name="txtName"><span id="lblName" style="color: red;">*</span><br>
<label for="txtEmail">Email:</label><br>
<input type="text" id="txtEmail" style="width: 200px;" name="txtEmail"><span style="color: red;">*</span><br><br>
<button id="btnSubmit">Submit</button>
<input type="text" id="txtH" style="display: none;" name="txtH">
</fieldset>
</form>

Когда он отправляет, он работает правильно, за исключением того, что «txtName» и «txtEmail» не заполнены. Я не могу получить значения для отправки. После отправки он отправляет письмо по электронной почте, в противном случае мне нужно использовать PHP, а не jQuery. Спасибо за любую помощь!

Вот код sendmail.php.

ini_set('SMTP','mail.######.com' );
ini_set('smtp_port', '25');
ini_set('sendmail_from', 'info@#####.com');

$name = $_POST["txtName"];
$email = $_POST["txtEmail"];
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

$msgBody =  'The following information was submitted via the download form.' . PHP_EOL . PHP_EOL .
'Name: ' . $name . PHP_EOL .
'Email: ' . $email . PHP_EOL .
'URL: ' . $url . PHP_EOL;


$to = "[email protected]";
$subject = "A White Paper was downloaded";

$headers = "From: [email protected]" . "\r\n";

if (mail($to, $subject, $msgBody, $headers)) {
header('Location: download-success.php');
}
else {
header('Location: same.php');
}

}

0

Решение

У тебя ошибка здесь,

<form action="sendmail.php" type="post">

так должно быть method="post" не type="post"

<form action="sendmail.php" method="post">

а также в вашей кнопке отправки добавить type="submit"

<button id="btnSubmit" type="submit">Submit</button>

и здесь вам не нужно устанавливать display:none; ты можешь использовать type="hidden" если вы хотите скрыть ввод

<input type="hidden" id="txtH" name="txtH">

и в вашем PHP используйте isset

if (isset($_POST['txtName']) {
$name = $_POST["txtName"];
//and rest of the code goes here
}

И всегда

Добавьте отчет об ошибках в начало PHP-файла, который поможет найти ошибки.

error_reporting(E_ALL); //Error reporting enable
ini_set('display_errors',1);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]