从表单提交调用返回到.php文件

时间:2012-02-12 16:40:05

标签: php html forms submit

我在表格中有问卷。在它的最后,按下提交按钮,该按钮应该调用.php文件,该文件通过其操作信息将数据插入数据库,然后显示包含“感谢您参与等”的内容的最后一页。通过提交信息。

问题是在显示.php文件之前显示的是最后一页,这意味着它仅在半秒内可见,然后执行php脚本,最终显示空白页。

php脚本可以正确地将数据插入问卷中,因此语法上应该没有错误。

任何想法,如果我必须退出cript或某事并返回.html文件或可能出错?

5 个答案:

答案 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调用的数据值,以有条件地显示错误。然后,您可以将用户返回到他们已经使用的完全相同的表单,并且所有数据仍然存在,并向他们显示错误消息。