无法通过javascript代码更改php会话变量
我的php代码如下:无法通过javascript代码更改php会话变量,javascript,php,Javascript,Php,我的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 func
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){
},
});
}
$(文档)。在('click','a#process',function(){
//设置开始时间
t0=性能。现在();
警报(“”);
var payment_period_id=parseInt($('#paymentPeriodId').val();
var unit_id=parseInt($('#unitIdz').val();
var user_id=parseInt($('#userIdz').val();
//检查所有打开的页面中是否存在相同的会话变量。函数位于D:\xampp\htdocs\diganta\assets\js\common\u js.php中
checkSessionDataWithPageSessionData(函数(dataii){
如果(数据II==='NOTCHANGED'){
检查ASALARYPROCESSONGONG(函数(dataoo))是否正常{
如果(dataoo==='NOTSET'){
//如果未设置,则设置名为salary\u的会话变量正在进行中
设置工资正在进行(功能(数据55){
如果(数据55==‘设置’){
进步();
var checkedRows=[];
$(“#监管者列表tr”)。每个(功能){
如果($(this).find(“输入”)为(“:选中”)){
checkedRows.push({“supervisor\u id”:$(this.find)(“td:eq(1)”).text()});
}
});
如果(checkedRows.length<1){
删除设置工资正在进行中();
自定义警报(“未选择主管”)、“错误”、10、“正确”、50;
}
如果(checkedRows.length>0){
确保不修改工资(支票行、用户id、单位id、付款期id);
}else{return;}
}else{custom_alert('无法设置正在进行的会话变量',“Error”,10,'right',50);return;}
});
}else{custom_alert('薪资流程正在进行',“Error”,10,'right',50);return;}
});
}else{custom_alert('检测到会话数据更改。无法执行。
刷新',“Error”,10,'right',50);return;}
});
});
函数EncurietIsNotReviedSalary(已检查的行、用户id、单位id、付款期id){
var url='主要薪资处理/EnsureitIsNotReviedSalary';
$.post(url,{payment\u period\u id:payment\u period\u id}).done(函数(数据){
data=parseInt(数据);
如果(数据>0){
setTimeout(函数(数据){delete_set_salary_is_on_going();},1000);
自定义_警报('这是修订后的薪资,无法在此处理。',“错误”,120,'正确',50);
}
else{检查工资是否被扣掉(检查行程、用户id、单位id、付款期限id);}
});
}
函数检查是否正在进行ASALARY处理(结果){
var url='主要工资处理/检查是否进行初步处理';
$.ajax({
url:url,
数据:{},
类型:“POST”,
成功:功能(数据){
结果(数据);
},
});
}
函数集\u工资\u正在进行中(结果){
var url='主要工资处理/设置工资正在进行';
$.ajax({
url:url,
数据:{},
类型:“POST”,
成功:功能(数据){
结果(数据);
},
});
}
函数delete\u set\u salary\u正在进行(){
var url='主要工资处理/删除设置工资正在进行';
$.ajax({
url:url,
数据:{'url2':''},
类型:“POST”,
成功:功能(数据){
},
});
}
单击#流程后,薪资流程开始
问题是javascript函数delete\u set\u salary\u is\u on\u going()无法更改
索引为“salary”的会话变量将“on”变为“NOTSET”您是否忘记在接收/处理url中写入会话开始()
<?php session_start() ?>
这应该是一条评论,而不是一个答案。您在帖子中说:要调用一些PHP代码,客户端必须向服务器发送一个新的HTTP请求。这可以使用三种可能的方法之一实现:链接,它使浏览器加载新页面。表单提交,向服务器提交数据并加载新页面。AJAX请求,这是一种Javascript技术,用于向服务器发出常规HTTP请求(如1.will和2.will),但不离开当前页面。我错了吗。