javascript是否获得一次值?

时间:2013-01-11 06:30:23

标签: php jquery session-variables

我正在使用codeigniter,我正在组合jquery。 我的问题是我有一个带有不同锚标签的菜单。 单击锚标记时,iframe src被更改, 但当我点击菜单项时,我想检查会话是否已登录,以便我可以将我的页面重定向到注销。

将var记录的服务器作为检查的sentinel值。不幸的是,当我在一个新标签中打开注销时,离开主布局,然后单击其他菜单项,记录的值仍为1,表示true和logged_in。我想请求帮助这个方法。

    $(document).ready(function(){

        $('a').click(function(event) {

            var logged = "<?php echo $this->session->userdata('logged_in'); ?>";
            alert(logged);

            if(logged == 1)
                $("#frame").attr("src", $(this).attr("id"));    
            else
                window.location.replace("https://www.facebook.com");
        });

2 个答案:

答案 0 :(得分:0)

是的,php是超文本预处理器,这意味着服务器在js在您的页面上变为活动状态之前处理数据。因此,一旦“logged”设置为true,它将一直保留到您重新加载页面为止。

您需要使用ajax来使您的脚本正常工作。在这里调用ajax函数调用:

     var logged = get_session_via_ajax_function();
     alert(logged);
     get_session_via_ajax_function(){....your ajax code here...}

“get_session_via_ajax_function()”不是真正的功能,只是为了给你一个想法。

答案 1 :(得分:0)

 $(document).ready(function(){

        $('a').click(function(event) {

           var logged =0;    
           $.ajax({
                  type: "post",
                  url: baseurl+"get_seesion_details",
                  async:false,
                  success: function(data, status){
                           logged = data;
                  } 
           });

           if(logged == 1)
               $("#frame").attr("src", $(this).attr("id"));    
           else
               window.location.replace("https://www.facebook.com");
      });
}); 
在codeigniter中

function get_seesion_detail(){

    $is_logged  = $this->session->userdata('logged_in');
    echo $is_logged;

}