Jquery更改php $ _SESSION

时间:2013-06-19 09:48:58

标签: php jquery

我想用jquery事件更改php $ _SESSION。在下面的代码$ _SESSION ['lang']不要改变

    $('[id^="lang_"]').click(function(){
        alert('<?php echo $_SESSION['lang']; ?>');
        lang_id = $(this).attr('id').split(/\_/);
        alert(lang_id[1]);
        switch( lang_id[1] ){
            case '1':
                //lang_id[1] is 1
                <?php unset($_SESSION['lang']); $_SESSION['lang'] = null;  $_SESSION['lang'] = '11111'; ?>
                break;
            case '2':
                //lang_id[1] is 2
                <?php unset($_SESSION['lang']); $_SESSION['lang'] = null;  $_SESSION['lang'] = '22222'; ?>
                break;
        }

我没有任何问题来获得正确的lang_ id。但是$_SESSION['lang']不会改变任何地方

2 个答案:

答案 0 :(得分:4)

我实际上有点无言以对。 :)

好的......

Javascript(和jQuery)在访问者浏览器上运行。

PHP在您网站所在的网络服务器上运行。

您无法在Javascript中运行PHP代码。您可以将PHP变量输出到JS函数中以定义特定值,如var value='<?php echo $theValue ?>'; - 但您无法在JS代码的运行中运行PHP逻辑。

如果你想这样做,你需要你的Javascript / jQuery来对一个你想要的PHP页面进行ajax调用。

$('[id^="lang_"]').click(function(){
    alert('<?php echo $_SESSION['lang']; ?>');
    lang_id = $(this).attr('id').split(/\_/);
    alert(lang_id[1]);
    switch( lang_id[1] ){
        case '1':
            setLanguage('11111');
            break;
        case '2':
            setLanguage('22222');
            break;
    }


function setLanguage(lang){
    $.post('setLanguage.php', {language:lang}, function(){
        alert('Language has been changed');

        //if you want to reload the current page
        //window.location=window.location.href;
    });
}

然后,您的setLanguage.php页面看起来应该是这样的

<?php 
      unset($_SESSION['lang']); 
      $_SESSION['lang'] = null;  
      $_SESSION['lang'] = $_POST['language']; 
?>

请记住,虽然这会根据需要更改$ _SESSION变量,但在刷新页面(或执行其他手动操作)之前,它不会影响页面的外观/动作方式。老实说,如果您需要刷新页面以查看更新,那么我甚至可能不会使用ajax并直接将用户定向到setLanguage.php并让该页面将其重定向回原来的位置。

答案 1 :(得分:0)

如果您编写<?php ...?>,则在将文件提供给客户端之前,此代码将在Serverside上执行。这意味着两个php语句都是在客户端获得响应之前执行的。您无法混合客户端代码和服务器端代码,因为服务器端代码在响应发送到客户端之前执行。