需要一个解决方案,使用yii中的ajax在php数组中存储值

时间:2014-02-11 07:29:10

标签: javascript php jquery ajax yii

我有这个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。

3 个答案:

答案 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);