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"answers"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);