我无法存储通过jQueryAjax传递的会话值。在codeigniter php框架中
我在存储会话值时遇到问题; 我无法增加会话计数变量 通过AJAX Jquery调用传递一些值 为了发挥作用,我以前设置的存储会话的数组也会用一个新数组进行更改 这里的问题是什么: 1> 当我使用一个控制器功能时我无法存储通过jQueryAjax传递的会话值。在codeigniter php框架中,php,codeigniter,jquery,Php,Codeigniter,Jquery,我在存储会话值时遇到问题; 我无法增加会话计数变量 通过AJAX Jquery调用传递一些值 为了发挥作用,我以前设置的存储会话的数组也会用一个新数组进行更改 这里的问题是什么: 1> 当我使用一个控制器功能时 startOnlineTest($testid=0) i set session countnew as 0 $this->session->set_userdata('countnew',0); and in view i use jquery to pass dat
startOnlineTest($testid=0)
i set session countnew as 0
$this->session->set_userdata('countnew',0);
and in view i use jquery to pass data to other function of same controller
public function ResponseOnline($qid,$response)
使用jquery的更改效果
echo "[removed]$(document).ready(function(){";
foreach($question['childQuestion'] as $q=>$aq){ //
echo "\$(\"input:radio[name=qid-$q]\").live('change',function(){
var sr=\$(\"input:radio[name=qid-$q]:checked\").map(function() {
return $(this).val();
}).get().join();
var qid = \$(\"input:radio[name=qid-$q]\").attr(\"qaid\");
"; echo "\$.get('"; echo base_url();echo "testpapers/ResponseOnline/'+qid+'/'+sr,{},function(data)
{\$('#res').html(data)});
});";}
echo"});[removed]" ;// this script is working fine
现在的问题是,虽然我
对响应行使用数组我的代码
是
public function ResponseOnline($qid,$response)
{
echo“this”。$this->session->userdata('countnew');//这不是上面函数startOnlineTest($testid=0)设置的echo[/color]
我将会话计数设置为新
$this->session->set_userdata('countnew',0)
echo$d=$qid;//我知道它没有用,只是为了节省在$d上测试的时间
$s=$response;
如果($this->session->userdata('countnew')==0)//此函数的算法,我将检查
//如果0执行此操作,则countnew session varaible
{
$sc=$this->session->userdata('countnew');//存储countnew变量
echo$sc=$sc+1;//递增计数器变量
$this->session->set_userdata('countnew',$sc);//将其存储在session中
echo“这是增加会话值”;
echo$this->session->userdata('countnew');
$r2[$d]=$s;//使用键$d和值$s存储数组值$r2
$this->session->set_userdata('res',$r2);//在session中设置此数组值
}
否则{//如果会话countnew!=0,则执行此操作
$r2=$this->session->userdata('res');//首先将$r2存储为会话返回的数组
$r2[$d]=$s;//然后向该数组添加值
$this->session->set_userdata('res',$r2);//将此数组存储到session
}
回声';
print_r($r2);//打印数组
}
我得到的第一次调用的结果很好,但对于第二次调用,我的值是overwrite session show数组([32323]=>23))
如果我通过函数(32323,23)
如果我通过(33,42)
我得到
数组([33]=>42)
我的旧值已被销毁。您应该在php中使用常规会话,因为codeigniter中的会话只允许您存储单个项目。
大概是这样的:
$items = $this->session->userdata('items');
array_push($items, $new_item);
$this->session->set_userdata('items', $items);
$items = $this->session->userdata('items');
$items['your_key'] = $new_item;
$this->session->set_userdata('items', $items);
或者,您也可以通过以下方式使用CodeIgniter会话:
$items = $this->session->userdata('items');
array_push($items, $new_item);
$this->session->set_userdata('items', $items);
$items = $this->session->userdata('items');
$items['your_key'] = $new_item;
$this->session->set_userdata('items', $items);
如果还要定义关键点,请执行以下操作:
但我想增加关键点和价值。我的意思是我想使用assoc数组。那么我如何使用数组来编辑我的答案。你明白了。只需进一步自定义代码以满足您的需要。谢谢您的回复,但我使用相同的代码,但得到相同的错误,我使用此$r2=$this->session->userdata('res');//首先将$r2存储为会话$r2[$d]=$s返回的数组//然后向该数组添加值$this->session->set_userdata('res',$r2);