我有这个ajax电话
<script>
function add(serviceId){
$.ajax({
url: "<?php echo Yii::app()->createUrl($bus->url.'/serAjax'); ?>",
type: "POST",
data: {"serviceId": serviceId},
success: function(result){
$("#services").append(result);
},
error: function (){
alert('Error');
}
});
}
ajax调用此页面
if(isset($_POST['serviceId']))
{
$serviceId = $_POST['serviceId'];
}
$service = Services::model()->findByPk($serviceId);
$all = array();
$ids = array();
//add services to array
array_push($all, $service->title);
array_push($ids, $service->id);
Yii::app()->session['serviceId'] = $ids;
foreach ($all as $a){
echo '<li class="list-group-item">'.$a.'</li>';
}
用户可以单击多个服务选项,每次执行此操作时都会调用ajax。现在我想要发生的是每次用户添加服务时,它都会将服务ID存储在$ ids = array();但最新发生的是,每次进行ajax调用时,它都会清空数组,只留下最后选择的服务。我需要它来保留所有ID。
答案 0 :(得分:1)
试试这个,
if(Yii::app()->session['serviceId'])
$ids = Yii::app()->session['serviceId'];
else
$ids = array();
答案 1 :(得分:0)
您应该使用内置函数setState存储这些值,如此
Yii::app()->user->setState('serviceId', $ids);
而不是:
Yii::app()->session['serviceId'] = $ids;
然后使用getState获取值
答案 2 :(得分:0)
这只是一个想法可能会有更好的解决方案。
每次发出请求时,都会再次创建数组,之前的值将丢失。相反,您可以使用一些涉及会话的解决方案。
就像在某个地方声明基于会话的数组,以便不再创建它
$_SESSION['all'] = array();
$_SESSION['ids'] = array();
//add services to array
array_push( $_SESSION['all'], $service->title);
array_push($_SESSION['ids'], $service->id);