Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我无法存储通过jQueryAjax传递的会话值。在codeigniter php框架中_Php_Codeigniter_Jquery - Fatal编程技术网

我无法存储通过jQueryAjax传递的会话值。在codeigniter php框架中

我无法存储通过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

我在存储会话值时遇到问题; 我无法增加会话计数变量 通过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 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);