通过jQuery和ajax将JSON中的php SESSION数据提取到html中

时间:2014-03-25 10:52:37

标签: php jquery ajax json

我在通过ajax和jQuery检索PHP SESSION详细信息时遇到了一个混乱的情况。

让我解释整个情况。

我的fetch.php [获取并发送会话详情]:

 header('Content-Type: application/json');
 session_name('admin');
 session_set_cookie_params(2*7*24*60*60);
 session_start();
 echo json_encode(array(
   'session'=>$_SESSION,
   'session'=>array(
     'user'=>$_SESSION['user'],
     'email'=>$_SESSION['email'],
     'rememberMe'=>$_SESSION['rememberMe']
   ),
 ));
 exit(0);

用于获取详细信息的jQuery代码:

 $.ajax({
   url: "fetch.php",
   type: "get",
   dataType: 'json',
   cache: false,
   success: function(data){
     user = data.session.user;
     email = data.session.email;
     rememberMe = data.session.rememberMe;
   }
 });

获取后,我正在尝试根据会话详细信息添加/删除某些内容:

 if(user != null && user != undefined && user != "undefined"){
   //if 'user' is not 'null/undefined', it means that he is logged in, so add something
 }else{
   //remove the added item
 }

主要PHP:

 header('Content-Type: application/json');
 session_name('admin');
 session_set_cookie_params(2*7*24*60*60);
 session_start();

 if($_SESSION['user'] && !isset($_COOKIE['remember']) && !$_SESSION['rememberMe']){
   $_SESSION = array();
   session_destroy();
 }  

 //......

 if($_REQUEST['Login']){
   // ....
   $_SESSION['user']=$name;
   $_SESSION['email']=$email;
   if(isset($_POST['rememberMe'])){
     $_SESSION['rememberMe'] = $_POST['rememberMe'];
     setcookie('remember',$_POST['rememberMe']);
   }else{
     setcookie('oneTime','1');
   }
   // ....
 }

 //.......

 if($_REQUEST['Logout']){
   $_SESSION = array();
   session_destroy();
   $admin['msg'] = "Logout successful";
 }

现在,主要的问题是,这段代码表现得神秘/不可预测...... 出于测试目的,我添加

  alert(user);

就在我的ajax代码之后。

所以,当我加载页面时,它会提醒undefined,这很好。 但是当我成功登录{例如,使用“try”user}登录时,它会警告null而不是用户名,并将动态元素添加到html。这意味着,完全忽略了if条件。

当我在没有注销的情况下刷新页面时,它会警告undefined并且不会删除动态添加的元素。

当我退出用户时,它会提醒真实用户名{“try”}并删除动态添加的元素[再次忽略if条件]。

这是我的jQ“登录”代码:

 $.ajax({
   url: $frm.attr('action')+'?'+name+'=true',
   type: $frm.attr('method'),
   data: serial,
   success: function(response){
     //.....
   }
 });

有人可以告诉我,我做错了......

抱歉打字错误或语法错误。

更新:

main.js的一些代码:

 var handler = {
   init: function(){
     $.ajax({
       url: "fetch.php",
       type: "get",
       dataType: 'json',
       cache: false,
       success: function(data){
         user = data.session.user;
         email = data.session.email;
         rememberMe = data.session.rememberMe;
       }
     });
     alert(user);  // echoing the value of user
     if(user != null && user != undefined && user != "undefined"){
       //....... dynamically add the element is user is logged-in
     }else{
       //...... remove the dynamically added element
     }
     handler.submit();
   },
   submit: function(){
    $('html').on('click','.submit',function(e){
       var $frm = $(this).parents('form');
       var serial = $frm.serialize();
       var name = $(this).attr('name');
       $.ajax({
         url: $frm.attr('action')+'?'+name+'=true',
         type: $frm.attr('method'),
         data: serial,
         success: function(response){
             //....... on success : some code
         }
       });
       setTimeout(function(){handler.init();},5000);
       e.preventDefault();
     });
   }
 };
 $(document).ready(handler.init);

0 个答案:

没有答案