2016-11-14 87 views
0

我的PHP代码如下:不能由JavaScript代码更改PHP会话变量

public function checkWhetherASalaryProcessIsOngoing(){   
    if(isset($this->session->userdata['salary_is_on_going'])){ 
    echo $this->session->userdata['salary_is_on_going']; }else{echo 'NOTSET';}  
} 

public function set_salary_is_on_going(){   
    if(!isset($this->session->userdata['salary_is_on_going'])){$isset = $this->session->set_userdata('salary_is_on_going','SET');} 
    echo $this->session->userdata['salary_is_on_going'];   
} 

public function delete_set_salary_is_on_going(){   

    $this->session->set_userdata('salary_is_on_going','NOTSET'); 
    echo $this->session->userdata['salary_is_on_going']; 
} 

我的javascript代码:

$(document).on('click','a#process',function(){ 
// set the start time 
t0 = performance.now(); 
alert('<?php if(isset($this->session->userdata['salary_is_on_going'])){echo $this->session->userdata['salary_is_on_going'];}?>'); 

var payment_period_id = parseInt($('#paymentPeriodId').val()); 
var unit_id = parseInt($('#unitIdz').val()); 
var user_id = parseInt($('#userIdz').val());  

// check whether same session variables exists in all opened pages. function in D:\xampp\htdocs\diganta\assets\js\common_js.php     
checkSessionDataWithPageSessionData(function(dataii){ 
if(dataii === 'NOTCHANGED'){ 

checkWhetherASalaryProcessIsOngoing(function(dataoo){ 
    if(dataoo === 'NOTSET'){ 
    // if not set then set session variable named salary_is_on_going  

    set_salary_is_on_going(function(data55){ 
     if(data55 === 'SET'){ 

     progress(); 

     var checkedRows = []; 
     $("#supervisorList tr").each(function() { 

      if ($(this).find("input").is(":checked")) { 
       checkedRows.push({"supervisor_id" : $(this).find("td:eq(1)").text()}); 
      } 
     }); 
      if(checkedRows.length < 1){    
       delete_set_salary_is_on_going(); 
       custom_alert('Supervisor not selected.',"Error",10,'right',50); 
       }  
      if(checkedRows.length > 0){ 
       ensureItIsNotARevisedSalary(checkedRows,user_id,unit_id,payment_period_id); 
      }else{return;} 



     }else{custom_alert('Can not set salary ongoing session variable.',"Error",10,'right',50);return;}    
    });   

    }else{custom_alert('A salary process is ongoing.',"Error",10,'right',50);return;} 
}); 

}else{custom_alert('session data change detected. Cannot Execute.<br><br> refresh.',"Error",10,'right',50);return;} 
    });   
}); 


function  ensureItIsNotARevisedSalary(checkedRows,user_id,unit_id,payment_period_id){ 

var url = '<?php echo base_url();?>primary_salary_processing/ensureItIsNotARevisedSalary'; 
$.post(url,{payment_period_id:payment_period_id}).done(function(data){ 
data = parseInt(data); 
if(data > 0){   
      setTimeout(function(data){delete_set_salary_is_on_going();},1000); 
      custom_alert('This is a revised salary it can not be processed from here.',"Error",120,'right',50);   
     }   
    else{checkWhetherSalaryIsLocked(checkedRows,user_id,unit_id,payment_period_id);}  
}); 
} 

function checkWhetherASalaryProcessIsOngoing(result){ 

var url = '<?php echo base_url();?>primary_salary_processing/checkWhetherASalaryProcessIsOngoing'; 
$.ajax({ 
    url:url, 
    data:{}, 
    type:"POST", 
    success:function(data){ 
     result(data); 
    },   
}); 
} 
function set_salary_is_on_going(result){ 

var url = '<?php echo base_url();?>primary_salary_processing/set_salary_is_on_going'; 
$.ajax({ 
    url:url, 
    data:{}, 
    type:"POST", 
    success:function(data){ 
     result(data); 
    },   
}); 
} 

function delete_set_salary_is_on_going(){ 

var url = '<?php echo base_url();?>primary_salary_processing/delete_set_salary_is_on_going'; 
$.ajax({ 
    url:url, 
    data:{'url2':'<?php echo $this->session->userdata['url'];?>'}, 
    type:"POST", 
    success:function(data){ 

    },   
    }); 
} 

点击#过程工资过程开始之后。

问题是javascript函数delete_set_salary_is_on_going()不能改变“salary_is_on_going”到“NOTSET”具有指数

会话变量

+0

你说在http://stackoverflow.com/questions/13840429/what-is-the-difference-between-client-side-and-server-side-programming后比:要调用一些PHP代码,客户端将不得不向服务器发送一个新的HTTP请求。这可以通过三种可能的方法之一来实现: 链接,它使浏览器加载新页面。 表单提交,它将数据提交给服务器并加载新页面。 一个AJAX请求,它是一种向服务器发出常规HTTP请求的Javascript技术(如1.和2.将会),但不会离开当前页面。在这里我使用的是ajax。我错了吗。 –

回答

-1

你忘了写在session_start()在接收/处理网址是什么?

<?php session_start() ?> 
+0

这应该是一个评论而不是答案。 – secelite