1

管理者コントロール パネル用の小さなプラグインを追加した invision 電源ボードを使用しています。このプラグインでは、DB の値を変更するためのものです。フォームを追加しました。フォームを送信したときはすべて問題ありませんでしたが、F5 ですべてのページをリロードすると、フォームが再度送信されました。

私のコードがあります

<form method="post" id='xp_form' name='xp_form' enctype="multipart/form-data" action="" style='margin: 5px;'>
                    <label style='font-weight: bold;'>New value</label>
                    <p style='margin-top: 3px;'>
                        <input size="5" maxlength="7" name="xpValue" value="" tabindex="1" style='width: 98%; border-radius: 7px;'>
                    </p>
                    <fieldset style='text-align: center;border-top: 1px solid #ccc;margin-top:5px;'>
                        <input value='Cancel' name='xn_value' onclick='closeEdit()' type='button' style='padding: 4px;cursor: pointer;-webkit-border-radius: 4px; border-radius: 4px;border-color: #2b2b2b;'> &nbsp;
                        <input value=' Save ' type='button' onclick='return testPost()' style='padding: 4px;cursor: pointer;-webkit-border-radius: 4px; border-radius: 4px;border-color: #2b2b2b;'>
                        </fieldset>
                </form>

フォーム送信用のJavaScriptコード

document.forms["xp_form"].submit(); //first submit
                        document.forms["xp_form"].reset(); //and then reset the form values

別のページにリダイレクトしたり、送信ボタンを無効にしたりできません。説明させてください。CMを使用しています。ダッシュボードの場合、プラグインを追加しました -> image。管理者が行を選択したら、ポップアップ ウィンドウを表示する鉛筆アイコンのボタンをクリックします。このウィンドウで、管理者は値を編集して値を保存し、他のレコードを編集できます

4

4 に答える 4

0

とにかく JavaScript を使用している場合は、「送信」ボタンを無効にして、サーバーへの AJAX 投稿を行うことができます。リクエストが失敗した場合は、ボタンを再度有効にできます。成功した場合は、ボタンを有効にせずにユーザーをリダイレクトできます。

2番目のオプションは、投稿データが来たときにフォームを処理し、投稿をサポートしていない別のページ(「ありがとう」ページなど)のリダイレクトをユーザーに送信するようにサーバーコードを記述することです。

于 2013-07-20T07:31:09.880 に答える
0

投稿された値を処理するコードにアクセスできる場合は、再送信を許可できますが、投稿された以前の値と異なる場合にのみデータベース値を更新します。

これを行うには、おそらくセッションまたは Cookie を使用するか、POST される値を毎回保存する (または md5(value) を使用する) 非表示の入力を使用して、以前の値を記憶する必要があります。処理では、受信した値を以前に記憶された値と比較し、これらの値が異なる場合にのみデータベース更新コードを呼び出すことができます。

于 2013-07-20T09:48:35.717 に答える
0

送信されていないページへのリダイレクトは、最も簡単な方法の 1 つです。

于 2013-07-20T07:24:45.423 に答える
-1

これが私のやり方で、完全にうまく機能します。temp.php などのサーバー側ハンドラーにデータを送信します (ハンドラーを変更します)。ハンドラーは、セッション内に $_POST または $_GET 変数を格納します。私は、すべてのサーバー側のテクノロジーには何らかのセッション処理があると信じています。次に、ページ送信後にユーザーがいるページにすぐにリダイレクトします(phpでは、これはheader()呼び出しを使用して行われます)。これにより、更新による複数の送信が解決されます。

ユーザーを別のページにリダイレクトさせたくない場合は、送信ボタンを無効/有効にして ajax を使用し、送信後にフォーム フィールドをクリアします。

于 2013-07-20T09:28:33.673 に答える