2

ページの読み込み時に ajax リクエストを実行し、特定の条件が発生したときに PHP セッションを削除しています。はい、これ:

function load_page(){
console.log("page load function")
$.ajax({
    url: "ajax/page_load.php",
    type: "POST",
    data: "rand="+Math.random()*10000,
    cache: false,
    success: function (result) {
       load_content(window.location.hash);
    }
});

}

は次のpage_load.phpとおりです。

session_start();
require_once("../lib/connect.php");
require_once("../lib/users.php");
$user=new user();
if(isset($_SESSION['igames_user']))
{
    if(!$user->check_logged_in($_SESSION['user']))
    {
        $_SESSION = array();
        session_unset();
        session_destroy();
        print_r($_SESSION);
    }

}

を返しますArray()。これは、セッションがクリアであることを意味します。load_content()関数では、別の ajax リクエストを実行しています。

function load_content(hash){
hash=hash.replace("#","");
$("#wrapper").fadeOut(function(){
    var that=$(this);
    that.html('');
    that.addClass("loader");
    that.addClass("loading_center");
    that.fadeIn(function(){
        var data=hash
        $.ajax({
            url: "ajax/get_page.php",
            type: "GET",
            data: data,
            cache: false,
            success: function (html) {
                that.fadeOut(function(){
                    that.html(html);
                    that.removeClass("loader");
                    that.removeClass("loading_center");
                    that.fadeIn();
                });
            }
        });
    });
});

}

get_page.php はこれだけを行います:

session_start();
print_r($_SESSION);

これは、期待どおりに空の配列を返しません。どうした?手伝ってくれてありがとう。

4

2 に答える 2

0

私の推測では、「非同期」呼び出しを行っているため、セッションがリセットされる前に2番目のjs関数が実行されます。

于 2012-09-24T19:05:30.667 に答える
0

最初のajaxリクエストを呼び出さず、状態をチェックしてget_page.phpファイル内のセッションを削除することで問題を解決しました。返信ありがとうございます。

于 2012-09-25T03:55:35.810 に答える