0

この質問はとても基本的なことなので、私はそれを聞くのがほとんど恥ずかしいのですが、それは私を困惑させました. それを説明する短いコード スニペットを書きました。

<form id="MyForm" method="post" enctype="multipart/form-data" >
    <input type="file" id="get_file" name="get_file" >
    <input type="submit" name="submitForm" value="Submit" >
</form>

<?php
    if (isset($_POST['submitForm'])) {
    echo "<script type='text/javascript'>alert('Selected')</script>";
} else {    
    echo "<script type='text/javascript'>alert('Not selected')</script>";
}
?>

このページを初めて読み込むと、アラートに「選択されていません」と表示されます。良い。フォームを送信すると、アラートに「選択済み」と表示されます。また良い。しかし、ページを更新すると、まだ「選択済み」のままです。「IF」ステートメントでこれが可能になる理由がわかりません。ページが更新されるたびにではなく、フォームでデータを一度送信し、ユーザーが送信するまで再度送信しないようにします。

これは初心者が Google を使うのが面倒なときに尋ねるような質問のようですが、私は見ました (このサイトにはこの問題に対処するスレッドがいくつかありますが、誰も解決策を提示していません)。HTML フォームについて調べましたが、まだわかりません。

これは私以外の誰もが知っていることですか?誰かが私に手がかりを与えることができますか? ありがとう。

編集: 誰かがこのスレッドに出くわし、迅速かつ汚い修正が必要な場合は、ここに私が偶然見つけたものがあります. 選択キーをもう一度押すだけで、jQuery を使用して簡単に実行できます。フォームは再送信されますが、フォーム変数はすべてクリアされます。エレガントではないかもしれませんが、完璧に機能します。

4

1 に答える 1

1

ページをリロードすると、POST リクエストが再送信されます。これは、submitForm=Submitがリクエスト ボディの一部であることを意味します。

これを回避するには、 Post/Redirect/Getパターンを使用する必要があります。

于 2012-02-13T22:44:41.230 に答える