【发布时间】:2017-09-02 08:49:19
【问题描述】:
我正在创建一个可以从任何页面登录的网络应用程序。为了实现这一点,我使用了登录表单的模式。成功登录后,我希望用户留在同一页面上。这是我的登录验证脚本。
$.ajax({
dataType: "json",
type: "POST",
data: {
login: true,
email: cleanScripts($('#username').val()),
password: cleanScripts($('#password').val())
},
url: "plugins/validator.php",
success: function () {
location.reload();
},
error: function () {
$('.error').show();
}
});
在标题模板(我有登录按钮的地方)上,我检查用户是否已登录并更新 html 代码,如下所示
if (!isset($_SESSION['userIdMain']))
echo '<li>
<a href="#" onclick="showLoginForm();">
<i class="dashicons dashicons-lock"></i>
<span>LOGIN/SIGN UP</span>
</a>
</li>';
else echo '<span>Hi, ' . $_SESSION["userName"] . '</span>';
页眉模板包含在页面中使用
<?php include 'templates/header.php' ?>
理想情况下,成功登录后,页面应该刷新,而不是登录/注册按钮,它应该显示登录用户的名称。但是用户界面没有更新。即使成功登录,页面也会显示 LOGIN/SIGNUP 按钮。
当我导航到其他页面时,它按预期工作。执行登录的页面的 UI 未更新。知道为什么会这样吗?
谢谢
【问题讨论】:
-
您确定验证器正在写入 $_SESSION 吗?
-
是的。当我导航到另一个页面时,它工作得很好。说,我从联系页面登录。刷新时,联系人页面未更新。当我进入常见问题页面时,它的工作和用户界面正在更新。
-
好的,验证器正在运行,但页面没有刷新。你能确认
success() {}正在执行吗?也许可以输入控制台登录来检查它 -
我刚刚意识到您说页面令人耳目一新,我的错误。也许它是从浏览器的缓存中返回的。尝试使用附加到 url 的随机 get 参数重新加载页面,以强制从服务器正确重新加载
-
即使我认为它与缓存有关。但是我应该如何让它在没有任何参数的情况下工作。我见过很多网站在没有任何额外参数的情况下正确地做到了这一点
标签: javascript php jquery html login