【问题标题】:Removing cart products from input with product id value使用产品 id 值从输入中删除购物车产品
【发布时间】:2017-09-11 18:21:03
【问题描述】:

我想与input type ="hidden" 合作,以便进行检查。我有一个滑块,它显示一个类别的产品,并通过两个 Ajax 请求通过单击购买和删除按钮添加和删除它们,但这与这个问题没有太大的相关性。

只能通过订单购买幻灯片上的一种此类产品,但如果添加其中一种产品并更新页面并再次单击购买按钮,则会添加另一种该产品,这是不应该发生的。我想确保在页面的更新中,如果已经添加了这些产品之一,则将其删除,但我不知道从哪里完成它。我想我应该使用input type ="hidden",这样我就可以通过它保存添加产品的id的值,但是我不知道如何进行验证。

除了 Ajax 申请的代码之外,我将在下面添加按钮的代码和我已经完成且正确的输入。如有必要,我会添加我使用的控制器的代码。

按钮和输入代码:

<button style="margin-left: 11%;" type="button"  class="button btn-cart" onclick="addCartao('<?php echo $_product->getId(); ?>')" name="cartaoMensagem<?php echo $_product->getId(); ?>" id="cartaoMensagem<?php echo $_product->getId(); ?>"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<button style="display: none; margin-left: 11%;" type="button" id="cartaoMensagemRemover<?php echo $_product->getId(); ?>" title="Remover" class="button btn-cart" onclick="removeCartaotoCart('<?php echo $_product->getId(); ?>')" name="cartaoMensagem<?php echo $_product->getId(); ?>"><span><span>Remove</span></span></button>
<input type="hidden" name="cartao_adicionado" id="cartao_adicionado" value="" />

Ajax 申请代码:

var productSelected = "";

        function addCartao(product){
            if( productSelected != "" ){
                removeCartaotoCart(productSelected);    // Remove the item in cart, if there is one.
              }
            $j('#cartaoMensagem'+product).hide();
            $j('#cartaoMensagemRemover'+product).show();
            $j('#cartaoMensagemRemover'+product).css({'background-color': '#000000'});
            $j.ajax({
              type: "POST",
              url: "<?php echo Mage::getUrl('fol_carousel/ajax/addCartao') ?>",
              data: {
                product: product
              },
              dataType: 'json',
              cache : false,
              beforeSend: function () {

              },
              success: function (retorno) {
                var button = $j('#cartaoMensagemRemover'+product);
                productSelected = product;

                $j('#cartaoMensagemAdicionado').val(productSelected);                   
                $j('.item-custom').append('<tr id="trAppend'+product+'"><td class="a-center lc-thumbnails"><img src="' + retorno['imagem'] + '" width="50" height="50" alt="' + retorno['name'] + '"></td><td><h3 class="product-name">' + retorno['name'] + '</h3></td><td class="a-center">1</td><td class="a-right"><span class="cart-price"><span class="price"> R$ ' + retorno['price'] + '</span></span></td></tr>');
                getSubTotal();
                getGrandTotal();
              },
              complete: function () {

              },
              error: function (x,y,z) {
                alert("error");
                alert(x);
                alert(y);
                alert(z);
              }
          });
        }

        function removeCartaotoCart(itemId){
            productSelected = ""; 
            $j('#cartaoMensagemRemover'+itemId).hide();
            $j('#cartaoMensagem'+itemId).show();
            $j.ajax({
                type:"POST",
                url:"<?php echo Mage::getUrl('fol_carousel/ajax/removeCartao') ?>",
                data:{
                    itemId: itemId
                },
                cache: false,
                beforeSend: function(){

                },
                success: function(retorno){
                    var button = $j('#cartaoMensagemRemover'+itemId);
                    $j('#cartaoMensagemAdicionado').val(productSelected);                        
                    $j('.item-custom #trAppend'+itemId+'').remove();
                    getSubTotal();
                    getGrandTotal();                       
                },
                complete: function () {

                },
                error: function (x,y,z) {
                alert("error");
                alert(x);
                alert(y);
                alert(z);
              }
            });
        }

【问题讨论】:

    标签: javascript php jquery ajax magento-1.9


    【解决方案1】:

    您应该做的是制作一个小的 php 代码来进行验证,其中包含这些产品的 SKU,如果它们在购物车中,则为布尔变量分配一个值并将其插入到 input 中在 jQuery 中处理这个值。

    用于验证的php代码:

    <?php
        $array_de_skus_de_cartoes = array(45,60,80,90,102,103,104,105); //SKUs of products
        $isCartaoAdicionado = 0;
        $cart = Mage::getModel('checkout/cart')->getQuote();
        foreach ($cart->getAllItems() as $item) {
    
            foreach ($array_de_skus_de_cartoes as $sku) {
                if($sku == $item->getProduct()->getSku()) {
                    $isCartaoAdicionado = 1;
                    $cartao_id = Mage::getModel("catalog/product")->getIdBySku($sku);
                }
            }
        }
    
        if($isCartaoAdicionado == 1) {
    ?>
            <input type="hidden" name="cartao_adicionado" id="cartao_adicionado" value="1" />
            <input type="hidden" name="cartao_adicionado_product_id" id="cartao_adicionado_product_id"" value="<?php echo $cartao_id ?>" />
    <?php
        }
        else {
    ?>
            <input type="hidden" name="cartao_adicionado" id="cartao_adicionado" value="0" />
            <input type="hidden" name="cartao_adicionado_product_id" id="cartao_adicionado_product_id"" value="" />
    <?php
        }
    ?>
    

    Ajax 请求代码更新:

        var isCartaoAdicionado = $j('#cartao_adicionado').val();
        var isCartaoAdicionadoProductId = $j('#cartao_adicionado_product_id').val();
        var productSelected = "";
    
        function addCartao(product){
            if(isCartaoAdicionado == 1){
                removeCartaotoCart(isCartaoAdicionadoProductId);
            }
            if( productSelected != "" ){
                removeCartaotoCart(productSelected);    // Remove the item in cart, if there is one.
            }
            $j('#cartaoMensagem'+product).hide();
            $j('#cartaoMensagemRemover'+product).show();
            $j('#cartaoMensagemRemover'+product).css({'background-color': '#000000'});
            $j.ajax({
              type: "POST",
              url: "<?php echo Mage::getUrl('fol_carousel/ajax/addCartao') ?>",
              data: {
                product: product
              },
              dataType: 'json',
              cache : false,
              beforeSend: function () {
    
              },
              success: function (retorno) {
                var button = $j('#cartaoMensagemRemover'+product);
                productSelected = product;
                $j('#cartaoMensagemAdicionado'+product).val(productSelected);            
                $j('.item-custom').append('<tr id="trAppend'+product+'"><td class="a-center lc-thumbnails"><img src="' + retorno['imagem'] + '" width="50" height="50" alt="' + retorno['name'] + '"></td><td><h3 class="product-name">' + retorno['name'] + '</h3></td><td class="a-center">1</td><td class="a-right"><span class="cart-price"><span class="price"> R$ ' + retorno['price'] + '</span></span></td></tr>');
                getSubTotal();
                getGrandTotal();
              },
              complete: function () {
    
              },
              error: function (x,y,z) {
                alert("error");
                alert(x);
                alert(y);
                alert(z);
              }
          });
        }
    
        function removeCartaotoCart(itemId){
            productSelected = ""; 
            $j('#cartaoMensagemRemover'+itemId).hide();
            $j('#cartaoMensagem'+itemId).show();
            $j.ajax({
                type:"POST",
                url:"<?php echo Mage::getUrl('fol_carousel/ajax/removeCartao') ?>",
                data:{
                    itemId: itemId
                },
                cache: false,
                beforeSend: function(){
    
                },
                success: function(retorno){
                    var button = $j('#cartaoMensagemRemover'+itemId);                $j('#cartaoMensagemAdicionado'+itemId).val(productSelected);
                    $j('.item-custom #trAppend'+itemId+'').remove();
                    getSubTotal();
                    getGrandTotal();
                },
                complete: function () {
    
                },
                error: function (x,y,z) {
                alert("error");
                alert(x);
                alert(y);
                alert(z);
              }
            });
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2014-02-06
      相关资源
      最近更新 更多