0

我正在使用一个简单的表单(来自www.csskarma.com/lab/contactForm/),它在页面上进行处理,然后抛出成功或失败消息。

我的问题有两个(可能很愚蠢):

1) 提交后,页面 url 从“/”变为“/index.php”——这不是问题,但如果您尝试重新加载,您会收到“这将重新提交所有内容”消息。有没有办法解决这个问题?我不介意网址更改,但重新加载时重新提交有点问题。

2)再次加载表单会很棒,为空。万一有人想……写两次?如果重新加载显示一个干净的表单,这将不是一个问题,所以,我想它几乎是一个或另一个。

validate.js 正在处理一切,这是巨大的,我无法开始理解。

非常感谢任何帮助。

4

4 回答 4

1
  1. 重定向到某个位置,将阻止这种情况发生

  2. 重定向到表单页面

    header('位置:http ://www.example.com/form.php ');

于 2012-09-18T20:35:26.140 回答
1

使用 AJAX 通过jQuery 表单插件提交表单意味着您可以取消任何刷新并保持 URL 干净。

于 2012-09-18T20:42:01.393 回答
0

谢谢大家。

我最终将表单保留在 php 声明之外(它一直在最终标签中),虽然重新提交时重新加载仍然是一个问题,但由于表单仍然与感谢消息一起显示,一切似乎都变得更加清晰。无论如何,现在工作。再次感谢,--m

于 2012-09-19T01:58:55.697 回答
0

我已经修改了 PHP,希望它能解决你的两个问题:

这在打开的 php 标签之后

// get the status from the url bar
$status = $_GET['status'];


修改成功消息:

if ($success){
    // we want to redirect via PHP so that users do not get that "resubmit message"
    header('location: '.$_SERVER['PHP_SELF'].'?status=sent');
} else {
    // we want the form to show up again? so, pass an error
    $status = 'error';
}


这正好在结束“?>”标签之前:

# run the status through a switch if not empty
if(!empty($status)) {
    switch($status) {
        case 'sent':
            echo('<p class="feedback yay">All is well, your e&ndash;mail has been sent.</p>');
            break;
        case 'error':
            echo('<p class="feedback oops">Something went wicked wrong; maybe you clicked too hard.</p>');
            break;
    }
}
于 2012-09-18T20:54:27.447 回答