0

メッセージを送信するためにフォームを使用したphpページがあります。それはそれ自体に提出します:

action="<? php echo $_SERVER['PHP_SELF'];?>"

次に、電子メールを送信します。メッセージが正常に送信されたかどうかを警告するために、jnotify を使用する JavaScript 関数があります。この関数は、php 変数 $sent=='yes' が成功メッセージについて通知するかどうかをチェックし、そうでない場合はエラーについて通知します。

問題は、ユーザーがメッセージを送信して別のページに移動し、ブラウザーの [戻る] ボタンを使用して戻ると、通知が表示されることです。通知を一度だけ表示し、ブラウザが戻ったり更新されたりしたときの通知を忘れたい.

それに対する最善の解決策は何ですか?

4

3 に答える 3

1

次のようなことを試してください:

<?php

session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (form_is_valid()) {
        $_SESSION['form_success'] = true;
    } else {
        $_SESSION['form_success'] = false;
    }
    header('Location: ' . $_SERVER['PHP_SELF'];
    exit;
} else if (isset($_SESSION['form_success'])) {
    if ($_SESSION['form_success'])) {
        // insert success javascript
    } else {
        // insert failure javascript
    }
    unset($_SESSION['form_success']);
}

// display_form

これにより、成功/失敗のメッセージが 1 回だけ表示され、後で [戻る] ボタンを使用しても、投稿データの再送信に関する警告が表示されなくなり、成功/失敗のメッセージも表示されなくなります。失敗メッセージが 2 回。JavaScript が表示されるのは、最後のリクエストでフォームを送信したときだけです。

于 2012-07-27T20:56:46.217 に答える
0

ajaxリクエストを使用してフォームを送信できます。

$.ajax({
  type: 'POST',
  url: processor.php,
  data: $('#form_id').serialize(),
  success: function(data){
       if(data==0){ alert('message sent'); }else{ alert('message not sent'); }
  }
});
于 2012-07-27T20:35:38.370 に答える
0

Zend Helper Flash メッセンジャーは、あなたが探しているものかもしれません。

「これは、次のリクエストではメッセージを取得できるが、その後のリクエストでは利用できないことを意味します。」

追加のドキュメント

于 2012-07-27T20:40:50.360 に答える