带有 Fancybox 中的提交表单的 iframe 未发布数据

Posted

技术标签:

【中文标题】带有 Fancybox 中的提交表单的 iframe 未发布数据【英文标题】:Iframe with a submit form in a Fancybox not posting data 【发布时间】:2015-10-21 01:10:14 【问题描述】:

我正在尝试在花式框中提交表单。这是一个简单的联系我们表格,带有姓名和电子邮件以及提交按钮。 我将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');
  

【问题讨论】:

发布你的php代码sn-p。你这里有一个错误&lt;form action="sendmail.php" type="post"&gt;应该是&lt;form action="sendmail.php" method="post"&gt;做这个改变 【参考方案1】:

你错了,

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

【讨论】:

谢谢!我认为 type="submit" 修复了它。非常感谢!

以上是关于带有 Fancybox 中的提交表单的 iframe 未发布数据的主要内容,如果未能解决你的问题,请参考以下文章

IE中的jquery,fancybox

如何将表单数据发送到fancybox模式窗口

Fancybox 3 IFrame 内容之间的过渡动​​画效果

Fancybox 2,带表单的 iframe,在 IE7 中不起作用

jQuery FancyBox Iframe - 在fancybox 中使用$(document).ready?

同时从 iframe 中的表单更新数据