我有php页面,我使用表单提交消息。它提交给自己:
action="<? php echo $_SERVER['PHP_SELF'];?>"
然后它发送电子邮件,我有一个使用jnotify的javascript函数,以警告消息是否成功发送。此函数检查php变量$ sent =='yes'然后通知有关成功消息,否则通知错误。
问题是,当用户发送消息并转到另一个页面并使用浏览器返回按钮返回时,它会显示通知。我希望它只显示一次通知,忘记浏览器返回或刷新使用时的通知。
最佳解决方案是什么?
答案 0 :(得分: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应该显示的唯一时间是他们是否只是在上一次请求中提交了表单。
答案 1 :(得分: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'); }
}
});
答案 2 :(得分:0)