如何在 yii 中使用 ajaxlink 添加会话中的输入值

问题描述 投票:0回答:2

在我看来,我对如何做到这一点有点迷失。 我想添加数量。现在,它添加了,但是如何将输入值获取到我的 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);
        }
php yii
2个回答
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') ?>;
此代码将返回您操作的基本 url,而不传递任何参数。此行
$("#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”。就是这样,我在两者之间使用了分隔符,但您可以根据您的需要自定义它。


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 -->

抱歉缩进,这里很难正确缩进。

© www.soinside.com 2019 - 2024. All rights reserved.