使用$ .ajax更改$ _SESSION

时间:2015-11-22 20:42:16

标签: php ajax session

实际页面启动$.ajax (POST)请求,receiver.php需要修改$_SESSION。 但是它不起作用,我不知道id的{​​{1}}是否不同,或者我是否需要在页面上刷新以注册修改。

我尝试传输会话ID并修改它:

$_SESSION

但此代码无效......

我的<?php if ( count( $_POST ) > 1 && isset( $_POST["s"] ) ) { session_id( $_POST["s"] ); session_start(); } ?> 请求很简单:

$.ajax

我的var s = <?php echo "'" . session_id() . "'"; ?>; $.ajax({ url: 'jquery/receiver.php', type: 'POST', dataType: 'html', data: { s: s, // session id, useless? // data... }, }).done(function ( data ) { // operations ... } ;

receiver.php

最后,可以使用<?php if ( count( $_POST ) > 1 && isset( $_POST["s"] ) ) { session_id( $_POST["s"] ); session_start(); } $_SESSION['longarray']['key'] = 'value'; ?> 修改$_SESSION吗?或者我可能只有一个问题因为$.ajax (POST)$_SESSION

2 个答案:

答案 0 :(得分:1)

好的,我尝试了以下内容 testp1.php

    <?PHP
        session_start();
    ?>
    <script type="text/javascript" src="../../common/jquery/jquery-1.10.2.min.js"></script>
    <script>
    $(document).ready(function () {
        var s = '<?php echo session_id(); ?>';

        $.ajax({
            url: 'receiver.php',
            type: 'POST',
            data: {
                s: s, // session id, useless?
                // data...
            },
            success: function(data){ console.log(data); }
        })
    })
    </script>
    <body>
    <?PHP
        echo $_SESSION['longarray']['key'];
    ?>
    </body>

ajax调用receiver.php

<?php
    if ( count( $_POST ) >= 1 && isset( $_POST["s"] ) )
    {
        session_id( $_POST["s"] );
        session_start();
        $_SESSION['longarray']['key'] = 'mix';
    }
    else
        echo "ERROR";;
?>

在testp1.php上,正文显示mix

答案 1 :(得分:0)

我在rakesh219的帮助下发现了我的错误!

在我的代码中,我引入了愚蠢的行,如:

if ( ! isset( $_SESSION['akey'], $_SESSION['akey']['anotherkey'] ) {
    $_SESSION['akey'] = new array();
    $_SESSION['akey']['anotherkey'] = new array();
}

我已删除它并且已修复!