我在表格中有问卷。在它的最后,按下提交按钮,该按钮应该调用.php文件,该文件通过其操作信息将数据插入数据库,然后显示包含“感谢您参与等”的内容的最后一页。通过提交信息。
问题是在显示.php文件之前显示的是最后一页,这意味着它仅在半秒内可见,然后执行php脚本,最终显示空白页。
php脚本可以正确地将数据插入问卷中,因此语法上应该没有错误。
任何想法,如果我必须退出cript或某事并返回.html文件或可能出错?
答案 0 :(得分:4)
上添加action="submit.php"
然后在点击提交按钮后进入该页面时将其添加到该php页面的底部:
header("Location: successfull.html");
答案 1 :(得分:2)
IT听起来就像你正在做的是通过onsubmit事件用Javascript显示消息 - 这发生在请求被设置到服务器和php脚本之前。您需要执行ajax表单提交,然后在请求完成时显示消息,或者在完成后将php脚本重定向到成功消息页面。
但这只是猜测而没有看到任何代码......你应该发布一些: - )
答案 2 :(得分:1)
为什么不将表单提交给process.php然后处理它:
if(isset($_POST)){
$name = $_POST['name'];
// etc etc
// if all error checks pass, then echo out - thanks for taking part in our survey!
}
你正在做的是提交它,似乎你得到javascript来说'谢谢',但它是在提交之前提交的感谢信息 - 在你的.php上回应这个没有害处页!!
<强>更新强>
您之后提到重定向到某个页面,但这可以通过以下方式完成:
header("Location: where/to/go.php");
exit;
但是你不能用上面的方法做到这一点(回应成功),因为它会立即重定向。
答案 3 :(得分:1)
我处理这个问题的方法是将html内容放入php文件中。
<?php
if (!isset($_POST["submit"])) { // if page is not submitted to itself echo the form
?>
<html>
<head>
<title>survey</title>
</head>
<body>
<form method="post" action="<?php echo $PHP_SELF;?>">
...... (your form) ......
<input type="submit" value="submit" name="submit"><br />
</form><br />
</body>
</html>
<?
}
else {
$db = new PDO('...');
$db->exec(...);
echo "Thank you!";
}
?>
答案 4 :(得分:1)
您可以通过几种方式实现这一目标。
你可以让它提交的php文件发送出“谢谢参与”页面的数据(如果你只是去另一页就可以了。)
或者,如果您想要保持同一页面但只显示“谢谢”通知,我会使用JavaScript来禁用“提交”按钮的默认操作(事件处理程序中的e.preventDefault();
)在论坛上,然后还使用JavaScript来使用AJAX提交数据。
一个示例(使用JQuery),它不会更改您的页面并在后台执行提交,并在完成后在当前页面上显示“谢谢”。
$("a#confirmSubmit").click(function(e) {
e.preventDefault(); // Prevents the submit button from changing pages
data = {
Name: $("input#Name").attr("value")
// Add other data here also
};
$.post("/page/to/submit/to.php", data, function(d) {
//Write the code here to show the "thank you" notification.
//It will show upon completion here.
});
});
如果要通过插入数据库来检查错误,可以检查AJAX调用的数据值,以有条件地显示错误。然后,您可以将用户返回到他们已经使用的完全相同的表单,并且所有数据仍然存在,并向他们显示错误消息。