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

这应该使他们只看到一次成功/失败消息,如果他们稍后使用后退按钮,他们将不会收到有关重新提交帖子数据的警告,他们也不会看到成功/失败消息两次。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 messenger可能是您正在寻找的。

“这意味着该消息将在下一个请求时可用于检索,但在之后的请求中不可用。”

附加文件

于 2012-07-27T20:40:50.360 回答