Javascript 当我们获得get参数时,如何停止消息以显示页面是否刷新?
嗨,我正在尝试在PHP中发生某些事件时实现通知。假设用户正在更改其密码,并且在提交表单后,该操作会将其转到update.php,如果成功更改密码,则页面将重定向到change.php?err=1,其中1有一个noty通知,显示密码已成功更改。如果出现问题,它会重定向到change.php?err=2 update.php中用于更新密码的代码:-Javascript 当我们获得get参数时,如何停止消息以显示页面是否刷新?,javascript,php,mysql,Javascript,Php,Mysql,嗨,我正在尝试在PHP中发生某些事件时实现通知。假设用户正在更改其密码,并且在提交表单后,该操作会将其转到update.php,如果成功更改密码,则页面将重定向到change.php?err=1,其中1有一个noty通知,显示密码已成功更改。如果出现问题,它会重定向到change.php?err=2 update.php中用于更新密码的代码:- $sql="UPDATE user_credentials SET password=? WHERE id=?"; $stmt = $result-&g
$sql="UPDATE user_credentials SET password=? WHERE id=?";
$stmt = $result->prepare($sql);
$stmt->bind_param("si", $hash,$id);
if($stmt->execute()) {
header('Location: ../change.php?err=1');
}
else {
header('Location: ../change.php?err=2');
}
下面的代码用于在change.php中显示消息
if(isset($_GET['err']))
{
$error_id = $_GET['err'];
if ($error_id == 1) {
echo "<script> noty({text: 'Password Changed Successfully',layout: 'topRight',timeout: 2500,closeWith: ['click', 'hover'],type: 'success'});</script>";
}
else
if ($error_id == 2) {
echo "<script> noty({text: 'Something went wrong',layout: 'topRight',timeout: 2500,closeWith: ['click', 'hover'],type: 'success'});</script>";
}
}
if(isset($\u GET['err']))
{
$error\u id=$\u GET['err'];
如果($error\u id==1){
echo“noty({text:'密码已成功更改',布局:'topRight',超时:2500,关闭:['click','hover'],键入:'success'});”;
}
其他的
如果($error\u id==2){
echo“noty({text:'出错了',布局:'topRight',超时:2500,closeWith:['click','hover'],键入:'success'});”;
}
}
现在,如果页面被引用,它将一次又一次地显示消息。我只想在邮件被重定向而不是刷新时显示该邮件
我想到了一个解决方法,使用如下会话:-
if ($error_id == 1) {
if(!isset($_SESSION['notify'])) {
$_SESSION['notify'] = TRUE;
echo "<script> noty({text: 'Password Changed Successfully',layout: 'topRight',timeout: 2500,closeWith: ['click', 'hover'],type: 'success'});</script>";
}
}
if($error\u id==1){
如果(!isset($\u会话['notify'])){
$\u会话['notify']=TRUE;
echo“noty({text:'密码已成功更改',布局:'topRight',超时:2500,关闭:['click','hover'],键入:'success'});”;
}
}
但它会在刷新时停止消息,但在页面重定向时不会显示
我刚刚开始学习php,所以请让我知道我做错了什么,或者还有什么更好的方法来解决这个问题。非常感谢您的帮助。除了
if(isset($_GET['err']){
您可以添加:
如果(isset($\u GET['err'])&&$\u服务器['HTTP\u REFERER']==您的上一页){}
在您的例子中,除了
if(isset($_GET['err']){
您可以添加:
如果(isset($\u GET['err'])&&$\u服务器['HTTP\u REFERER']==您的上一页){}
在您的例子中是update.php这种功能通常在您使用调用时效果最好,这意味着:无需刷新页面 您可以在后台调用
update.php
(参见上面粘贴的链接的文档),并根据update.php
脚本的响应,在ajax函数的回调中决定显示什么通知
编辑:简单示例
$.ajax({
url: "/update-password.php",
data: {
user: "some-user",
pass: "new-pass"
}
}).done(function(response) {
// Show notification, decide on contents based on response
});
这种功能通常在您使用呼叫时最有效,这意味着:无需刷新页面 您可以在后台调用
update.php
(参见上面粘贴的链接的文档),并根据update.php
脚本的响应,在ajax函数的回调中决定显示什么通知
编辑:简单示例
$.ajax({
url: "/update-password.php",
data: {
user: "some-user",
pass: "new-pass"
}
}).done(function(response) {
// Show notification, decide on contents based on response
});
对于错误消息,请使用会话而不是GET。在检测到错误时,在header()调用之前设置错误: 在change.php中(以及在任何其他页面中都可能设置消息),执行以下类似操作:
session_start();
if (strlen($_SESSION['error'])) {
echo $_SESSION['error'];
$_SESSION['error'] = false;
}
对于错误消息,请使用会话而不是GET。在检测到错误时,在header()调用之前设置错误: 在change.php中(以及在任何其他页面中都可能设置消息),执行以下类似操作:
session_start();
if (strlen($_SESSION['error'])) {
echo $_SESSION['error'];
$_SESSION['error'] = false;
}
你能给我看一下变更代码吗。php@LemuelBotha捕捉参数和显示错误的代码已发布。您是否还需要代码的其他部分。能否显示设置$\u GET['err']的代码、表单的代码及其处理为什么还要使用GET?将错误消息放入$\u会话;对于每个页面,如果存在会话错误消息var,请打印并取消设置…@LemuelBotha我已使用编解码器更新帖子,您可以显示更改代码。php@LemuelBotha捕捉参数和显示错误的代码已发布。您是否还需要代码的其他部分。能否显示设置$\u GET['err']的代码、表单的代码及其处理为什么还要使用GET?将错误消息放入$\u会话;对于每个页面,如果存在会话错误消息var,则打印并取消设置…@LemuelBotha我已经用代码ajax更新了帖子,ajax可以/可以工作;事实上,它比这类解决方案更“2016”,但实现起来更复杂,如果您以前没有做过,而且没有太多时间,那么这将是一个更好的解决方案;事实上,这比这类解决方案要“2016”得多,但实施起来更复杂,如果您以前没有这样做过,也没有太多时间,那么这将是一个更好的解决方案。