javascript - 制作索引文件,如果 session 不存在,则通过 AJAX 加载登录屏幕

标签 javascript php html ajax session

我有一个使用 AJAX 加载网址的索引文件。

$(function(){
    $('#dashboard').click(function() {
    var req = $.ajax({
        type        : 'POST',
        url         : 'dashboard.php',
        dataType    : 'html'
    });
        req.done(function(data){
            $('#loadcontent').empty().append(data);
        });
    });
    $('#reports, #analytics').click(function() {
        alert('Coming Soon');
    });
    $(#login).load(function() {
    var req = $.ajax({
        type        : 'POST',
        url         : 'loginscreen.php',
        dataType    : 'html'
});

在我的索引页面上,您选择概述,它将加载到屏幕中间。这正是我所需要的。但是,如果 session 不存在,有没有办法在屏幕中间加载登录屏幕?

目前我已经尝试过

<?php 
session_start();
if( ! $_SESSION['loggedIn'] ) {
    // not logged in redirect direct to login page
    echo "<div id='loadcontent' class='col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main'>";  
    header('Location: loginscreen.php');
    echo "</div>";
}
require_once(dirname(__FILE__).'/config.php')
?>

但是,当我希望它位于屏幕中间时,这将重定向到页面“loginscreen.php”,有没有办法将其添加到我的 AJAX 中?

最佳答案

当浏览器获得重定向时,它会重定向整个窗口。您可以做的一件事是:

<?php 
session_start();
if( ! $_SESSION['loggedIn'] ) {
    // not logged in redirect direct to login page
    echo "<div id='loadcontent' class='col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main'>";  
    include "loginpage.php";
    echo "</div>";
    die();
}
require_once(dirname(__FILE__).'/config.php')
?>

当然,这可能会因为重复的内容而损害您的 SEO。要解决此问题,如果未登录,您可能只想返回一个空文件。如果 Javascript 检测到一个空 HTML 文件(只需检查是否有像导航栏这样的重要元素),它将请求登录页面。这将减少一些开销,因此每次执行某些操作时都不必发出多个 HTTP 请求。

关于javascript - 制作索引文件,如果 session 不存在,则通过 AJAX 加载登录屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840955/

相关文章:

javascript - 使用正则表达式替换匹配字符串的最后一个字符

javascript - 更改更新下拉菜单在 keyup 上附加结果

html - 如何获得相同大小的输入字段和提交按钮

jquery - 使用 HTML5、CSS3 和 jQuery 的 iPhone 应用程序

javascript - 调整图像大小以完美适应可变尺寸的 div

javascript - 如何在 Node/Javascript 中丢弃数字的小数部分

javascript - 正则表达式验证三个大写字母然后六个数字?

javascript - 来自 Angular 的 HTTP 请求作为 OPTIONS 而不是 POST 发送

php - 关于如何使用PHP和MySQL向网站添加评论的好教程

javascript - 如何在javascript中打印php变量并更改php的数组格式