希望你們都好。我有一個問題,那就是我使用了一個擴展名,即select2,它在下拉列表中顯示了所有產品的名稱,它對我來說工作正常。在我的數據庫中,每個產品都有單獨的價格。所以,我想在下一個下拉列表中顯示所有選定產品價格的總和。因此,我使用ajax將產品ID發送給控制器以查找產品價格。不幸的是,我不能總結所有的產品價格,因爲當我添加新產品時,產品的以前的Id得到改變,價格也得到改變。但是,我希望在選擇產品時將產品的價格保留在變量中。如何將ajax調用值保存到變量中
表單代碼:
<div class="row">
<?php echo $form->labelEx($model,'item_list'); ?>
<?php
$data = CHtml::listData(Products::model()->findAll(),'id', 'name');
echo Select2::activeMultiSelect(
$model, 'item_list', $data, array(
'required' => 'required',
'style' => 'width: 270px;',
'placeholder' => 'Add Product',
'select2Options' => array(),
'ajax' => array('type'=>'POST',
'url'=>$this->createUrl('totalOrderPrice'), //url to call.
'update'=>'#price', //selector to update
'data'=>array('item_list'=>'js:this.value'),
),
)
);
?>
<?php echo $form->error($model,'item_list'); ?>
</div>
控制器代碼:
...
...
public $prices;
...
...
public function actionTotalOrderPrice(){
$data = Products::model()->findByPk(array('id'=>$_POST['item_list']));
$this->prices += $data->prices;
echo CHtml::tag('input', array('type'=>'text' , 'name'=>'Order[price]' , 'value' => $this->prices));
}
我花了很多時間來解決這個問題,但無論如何不能。請幫助別人。
由於提前, Shimul
產品價格變動時? – sakhunzai
我會在創建下拉列表時添加一個數據屬性,例如'',並且每次添加新產品時不需要獲取總和價格:) – sakhunzai
@ sakhunzai's答案可能是我如何實施它。另一種方法是在您的ajax中使用'update',在回調函數中使用'success',並在javascript中添加邏輯以讀取當前值,減去以前的成本(如果這是對下拉菜單的更改而不是新的選擇),添加新的成本,並更新div。 。 。 。 – ernie