在我看来,我有点迷失在如何做到这一点。 我想添加数量。现在,它添加但我如何将输入值输入我的ajaxlink?
我的控制器正在使用会话添加。
<input id="quantity" type="text" value="1" class="span1">
<div id="cart-text">
<?php echo CHtml::ajaxLink(' Add ',
Yii::app()->createUrl('controller/basketAjax',array('id'=>$_GET['id'])),
array('success'=>'function(data){...
控制器:
$session=new CHttpSession;
$session->open();
if (!isset(Yii::app()->session['cart']))
{
$quantity = 1;
$session->add('cart',array(
'product_id.'.$id=>array("id"=>$id,
'quantity'=>$quantity)
));
}
else
{
$cart = Yii::app()->session['cart'];
$array = $cart['product_id.'.$id];
if (isset($array)){
$array['quantity']=$array['quantity']+1;
} else {
$t = array('product_id.'.$id=>array("id"=>$id,'quantity'=>$quantity));
array_push($cart,$t);
}
$session->add('cart', $products);
}
答案 0 :(得分:0)
ajaxLink将无法工作(据我所知),只需使用jquery以旧时尚方式构建它。您最好的解决方案实际上是将其放在表单中并提交表单。像
这样的东西<?php
Yii::app()->clientScript->registerCoreScript('yiiactiveform');
$form=$this->beginWidget('CActiveForm', array('action'=>Yii::app()->createUrl('cart/addProduct')));?>
<input type="text" name="quantity" value="1">
<input type="hidden" name="Product_id" value="<?php echo $model->id;?>">
<?php echo CHtml::ajaxSubmitButton('Save',CHtml::normalizeUrl(array('cart/addProduct','render'=>true)),
array(
'dataType'=>'json',
'type'=>'post',
'success'=>'function(data) {
if(data.status=="success"){
$("#formResult").html("form submitted successfully.");
}
else{
$.each(data, function(key, val) {
$("#user-form #"+key+"_em_").text(val);
$("#user-form #"+key+"_em_").show();
});
}
}',
)); ?>
<?php $this->endWidget(); ?><!-- .contact -->
对不起,缩进,难以在这里正确缩进。
答案 1 :(得分:0)
你可以使用jquery的keyup函数来做到这一点。首先将链接的ID设置为“mylink”。使用createUrl计算URL。
<script type="text/javascript" >
$("#quantity").keyup(function(){
var url=<?php echo Yii::app()->createUrl('controller/basketAjax') ?>;
$("#mylink").attr("href","");
$("mylink").attr("href",url +$(this).val());
});
</script>
现在我解释一下上面发生的事情。首先,我在你正在使用的输入上捕获事件键。每次按下输入键时都会调用它。现在url=<?php echo Yii::app()->createUrl('controller/basketAjax') ?>;
此代码会返回您的操作的基本网址,而不会传递任何参数。此行$("#mylink").attr("href","");
会将链接的href设置为“”(表示无效)。现在,这一行$("mylink").attr("href",url +$(this).val());
将附加您从输入中获得的输入值
请记住,您必须将分隔符放在中间,如
$("mylink").attr("href",url+"/" +"id"+"/"+$(this).val());
上面我假设您的案例中的href看起来像“projectname / index.php / controller / action / id / something”。多数民众赞成我之间使用了分隔符,但您可以根据需要对其进行自定义。