2014-02-11 2 views
1

에서 아약스를 사용하여 PHP 배열에 값을 저장하기위한 솔루션이 필요나는이 아약스 호출을 가지고 YII

아약스는이 페이지를 호출
<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'); 
    } 
    }); 
} 

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>'; 
    } 

사용자는 여러 서비스 옵션 및 모든를 클릭 할 수 있습니다 그들이 아약스를 할 시간이라고합니다. 이제는 사용자가 서비스를 추가 할 때마다 서비스 ID를 $ ids = array()에 저장합니다. 그러나 무슨 일이 일어나는가는 아약스 호출이 만들어 질 때마다 마지막으로 선택된 서비스를 떠날 배열 만 비 웁니다. 모든 ID를 유지해야합니다.

답변

1

생성되지 않도록

등이 어딘가에 위에 세션 기반의 배열을 선언

if(Yii::app()->session['serviceId']) 
    $ids = Yii::app()->session['serviceId']; 
else 
    $ids = array(); 
0

대신이

Yii::app()->user->setState('serviceId', $ids); 

같은 내장 함수와 setState를 사용하여 이러한 값을 저장해야합니다

Yii::app()->session['serviceId'] = $ids; 

다음 다시

0

이를 값을 얻을 수의 getState를 사용 그냥 아이디어가 더 나은 해결책이 될 수 있습니다.

요청이있을 때마다 배열이 다시 만들어지고 이전 값이 손실됩니다. 대신 세션과 관련된 몇 가지 솔루션을 사용할 수 있습니다. 그것은 다음과 같이 다시 시도

$_SESSION['all'] = array(); 
$_SESSION['ids'] = array(); 

//add services to array 
array_push( $_SESSION['all'], $service->title); 
array_push($_SESSION['ids'], $service->id);