Can';提交表单后,不要去掉空白的php页面
我们花了几个小时来寻找答案,但我已经筋疲力尽,脑子都僵住了 成功提交后,使用引导模式订阅php表单。一切正常,电子邮件通过,一秒钟或更少的空白页面出现后模式显示 我猜是在form.php文件是一个单独的文件之前加载的,但有没有办法停止加载空白页面 下面是Html代码Can';提交表单后,不要去掉空白的php页面,php,html,twitter-bootstrap,Php,Html,Twitter Bootstrap,我们花了几个小时来寻找答案,但我已经筋疲力尽,脑子都僵住了 成功提交后,使用引导模式订阅php表单。一切正常,电子邮件通过,一秒钟或更少的空白页面出现后模式显示 我猜是在form.php文件是一个单独的文件之前加载的,但有没有办法停止加载空白页面 下面是Html代码 发送 清楚的 非常感谢。 感谢您的注册,我们已将您添加到等待名单中! 接近 您试图实现的目标似乎与您实际编写的目标不同 让我们看看您的HTML表单。您已经在提交按钮上附加了引导的数据切换和数据目标属性。这意味着,当您单击该按钮
发送
清楚的
非常感谢。
感谢您的注册,我们已将您添加到等待名单中!
接近
您试图实现的目标似乎与您实际编写的目标不同
让我们看看您的HTML表单。您已经在提交按钮上附加了引导的数据切换
和数据目标
属性。这意味着,当您单击该按钮时,它将打开模式并提交表单。因此,用户将简要地看到一个模式,并看到页面重定向到您的PHP文件。(这就是为什么会出现一个模态。)
接下来,让我们看看您的PHP文件。首先,当您将表单从一个页面提交到另一个页面时,后一个页面不知道前一个页面中的HTML元素。这意味着您的echo'd
标记中的代码实际上不应该工作,因为它正在查找前一页上的HTML元素
现在,问你为什么会有空白页?好。。。一切正常,因此您的代码echo是一个
标记,没有可视指示器。但是就像我刚才说的,你在
里面的东西不起作用——所以什么都不显示,什么也不发生
因此,当您单击按钮时,重述事件的顺序:模式显示,表单提交,表单重定向到另一个页面,而另一个页面回显什么都没有
以下是我认为您试图实现的目标的一个糟糕/快速的解决方案:
数据切换
和数据目标
属性,这样当您单击按钮时,它不会打开模式右侧
<form action="form.php" method="post">
<div class="form-group label-floating">
<input name="email" class="control-label form-control text-center" type="text" placeholder="Enter your email address ...">
<button type="submit" class="btn btn-primary">Send</button>
</div>
</form>
脚本
标记行代码。相反,添加一段代码,使其重定向回PHP表单页面。关键部分是,您将在URL的末尾附加一个?success=true
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); // valid email or null|false
if ($email) {
$to = "test@test.com";
$from = "no-reply@test.com";
$headers = "From: " . $from . "\r\n";
$subject = "New Beta Subscription";
$body = "New user interested in beta program: " . $email;
if (mail($to, $subject, $body, $headers, "-f " . $from)) {
header('Location: subscribe.php?success=true'); // replace `subscribe.php` with PHP form page
exit;
}
echo 'There was a problem with your e-mail (' . $email . ')';
} else {
echo 'There was a problem with your e-mail'; // no point in printing $email if it is null
}
?success=true
是为了告诉PHP表单页面打开模式时一切顺利(3)
应该是这样
更好的方法是学习和使用AJAX。我认为最好使用php
json_encode
并在前端使用AJAX
。感谢您的详细解释和逐步指导。由于某种原因,我们无法使它工作。。。现在我得到的是内部服务器错误,而不是空白页,但提交的电子邮件仍在传递…可能是位置:
字符串,我忘了在header()
函数中包含该字符串。好的,空白页不再显示:)只是模态也不再显示。似乎页面在提交后被刷新,电子邮件仍在传递。假设您遵循引导,您应该在正文
标记的末尾包含jQuery和引导JavaScript文件。这意味着,如果您想要添加依赖于这两个脚本的任何JavaScript代码,则必须将代码放在它们之后。因此,请确保(3.)放在包含引导文件之后。我还将在(3.)的文档中放入警报('it fired')
,以查看代码是否进入该函数。如果是这样的话,那么这只是显示模态的问题。非常感谢!成功了!只需将脚本更新到新版本,并在链接文件之后添加脚本!
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); // valid email or null|false
if ($email) {
$to = "test@test.com";
$from = "no-reply@test.com";
$headers = "From: " . $from . "\r\n";
$subject = "New Beta Subscription";
$body = "New user interested in beta program: " . $email;
if (mail($to, $subject, $body, $headers, "-f " . $from)) {
header('Location: subscribe.php?success=true'); // replace `subscribe.php` with PHP form page
exit;
}
echo 'There was a problem with your e-mail (' . $email . ')';
} else {
echo 'There was a problem with your e-mail'; // no point in printing $email if it is null
}