2014-02-11 93 views
1

使用AJAX在PHP數組存儲值的解決方案,我有這樣的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>'; 
    } 

用戶可以點擊多種服務選擇,每他們這樣做的時候,阿賈克斯被稱爲。現在我想要發生的是每次用戶添加服務時,它都會將服務ID存儲在$ ids = array();但是發生的事情是,每次調用ajax時,都會清空數組,只留下最後選擇的服務。我需要它來保留所有的ID。

回答

1

創建試試這個樣子,

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

你應該使用內置函數的setState存儲這些值,這樣

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

代替:

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

,然後使用的getState得到值回

0

這只是一個想法可能會有一些更好的解決方案將在那裏。

每次發出請求時,數組將被重新創建,並且以前的值將丟失。相反,你可以使用一些涉及會話的解

像某處聲明之上基於會話的陣列,這樣就不會再次

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

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