不能通过javascript代码更改php会话变量


Cannot change php session variable by javascript code

我的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){
     },        
    });
}

单击#process后,工资流程启动。

问题是javascript函数delete_set_salary_is_on_going()不能改变

会话变量索引为'salary_is_on_going'到'NOTSET'

您是否忘记在接收/处理url中写入session_start() ?

<?php session_start() ?>