Fancybox 中带有提交表单的 Iframe 不发布数据
Iframe with a submit form in a Fancybox not posting data
我正在尝试在花式框内提交表单。这是一个简单的联系我们表格,其中包含姓名和电子邮件以及提交按钮。
我将 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 = "me@me.com";
$subject = "A White Paper was downloaded";
$headers = "From: info@me.com" . "\r\n";
if (mail($to, $subject, $msgBody, $headers)) {
header('Location: download-success.php');
}
else {
header('Location: same.php');
}
}
你这里有误,
<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);
我正在尝试在花式框内提交表单。这是一个简单的联系我们表格,其中包含姓名和电子邮件以及提交按钮。 我将 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 = "me@me.com";
$subject = "A White Paper was downloaded";
$headers = "From: info@me.com" . "\r\n";
if (mail($to, $subject, $msgBody, $headers)) {
header('Location: download-success.php');
}
else {
header('Location: same.php');
}
}
你这里有误,
<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);