如何在不重新加载页面的情况下取消设置会话

时间:2013-05-16 10:08:23

标签: php ajax

我想在不重新加载页面的情况下将用户注销,只需更新一些div。这就是我所拥有的,但显然不起作用。只有在重新加载页面后,会话才会取消设置。

$.ajax({
        url: "logout.php",
        method: "post",
        data: "account_type=twitter",
        success: function () {

        /*****do something***********/  
    }
});
logout.php中的

<?php
    session_start();

    if(isset($_POST['account_type']) && $_POST['account_type'] == "twitter") {

        unset($_SESSION['twitterId']);
        unset($_SESSION['twitterName']);
        unset($_SESSION['twitterPic']);
        unset($_SESSION['twitterUrl']);
        unset($_SESSION['access_token']);
        unset($_SESSION['token_oauth']);

        header("Location: index.php");
    }
?>

一些帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:1)

从技术上讲,你在做什么并没有错。

问题是期望注销会改变已经显示的内容。

当您通过ajax调用将用户注销时,旧的登录内容仍将显示在页面上,直到您实际重新加载整个页面或重新加载显示已登录内容的div的内容为止

例如,如果您有一个显示You are logged in的框,只需通过ajax注销将不会更改该内容,直到您使用ajax重新加载该div或重新加载整个页面,以便服务器然后告诉页面您是没有登录。

已经发送给用户的内容将始终保持原样,除非您在注销后使用ajax或通过重新加载页面上的所有内容进行专门更改。

答案 1 :(得分:0)

<?php
    session_start();

    if(isset($_POST['account_type']) && $_POST['account_type'] == "twitter") {

        session_destroy();

        header("Location: index.php");
    }
?>

答案 2 :(得分:0)

会话正在被ajax调用取消设置,但是你需要在成功注销ajax调用之后相应地操作div,比如隐藏用户名放置登录按钮或删除任何用户区....