0

私は単純なフォーム ( www.csskarma.com/lab/contactForm/から) を使用しています。このフォームはページ上で処理され、成功または失敗のメッセージが表示されます。

私の質問は2つあります(そしておそらくばかげています):

1) 送信後、ページの URL が「/」から「/index.php」に変更されます。これは問題ではありませんが、リロードしようとすると、「これによりすべてが再送信されます」というメッセージが表示されます。これを回避する方法はありますか?URL の変更は気にしませんが、リロード時の再送信には問題があります。

2) フォームを再び空にしてロードするのは素晴らしいことです。念のため、誰かが... 2 回書きたいと思っていませんか? リロードがきれいなフォームを示していれば、これはそれほど問題にはならないので、ほぼどちらかだと思います。

すべてがvalidate.jsによって処理されていますが、これは巨大で、私には理解できません。

どんな助けでも大歓迎です。

4

4 に答える 4

1

AJAX を使用してjQuery フォーム プラグインでフォームを送信すると、更新が不要になり、URL をきれいに保つことができます。

于 2012-09-18T20:42:01.393 に答える
1
  1. ある場所にリダイレクトし、これが起こらないようにします

  2. フォームページにリダイレクト

    header('場所: http://www.example.com/form.php ');

于 2012-09-18T20:35:26.140 に答える
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 に答える