Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax函数的问题_Javascript_Ajax - Fatal编程技术网

Javascript ajax函数的问题

Javascript ajax函数的问题,javascript,ajax,Javascript,Ajax,我一直在开发一个使用ajax来填充抽屉购物车的功能,因此不必刷新页面就可以看到购物车中的新项目。 这是相关的ajax调用: $.ajax({ url: _config.shopifyAjaxAddURL, dataType: 'json', type: 'post', data: $addToCartForm.serialize(), success: function(itemD

我一直在开发一个使用ajax来填充抽屉购物车的功能,因此不必刷新页面就可以看到购物车中的新项目。 这是相关的ajax调用:

        $.ajax({
          url: _config.shopifyAjaxAddURL,
          dataType: 'json',
          type: 'post',
          data: $addToCartForm.serialize(),
          success: function(itemData) {
            $.getJSON(_config.shopifyAjaxCartURL, function(cart) {
              $('.drawer-refresh-hide').css('display','block');
               $.each(cart.items, function(index, cartItem) {
                 var line= index +1;
                 var cents = "";

if (cartItem.price % 100 < 10) {
 cents = "0";
}
var price = parseInt(cartItem.price/100) + "." + cents + cartItem.price % 100;
        $('.dropdown-cart').append("<tr class='responsive-table-row'><td class='cart-first'><a href='"+ cartItem.url +"'</a><img src='"+ cartItem.image +"'/><a href='/cart/change?line="+ line +"&amp;quantity=0' class='qty-remove small--hide'><p class='small'>{{ 'cart.general.remove' | t }}</p></a><input type='submit' name='update' value='{{ 'cart.general.update' | t }}' class='qty-remove small small--hide ajax-submit'></td><td class='cart-second'><span class='CartTitle'>"+ cartItem.product_title +"</span>{% unless item.product.has_only_default_variant %}<p>"+ cartItem.variant_title+"</p>{% endunless %}{% if "+ cartItem.available +" %}<span class='stock-message'>In Stock</span>{% endif %}</td><td class='cart-mobile-last'><span>Quantity</span></td><td data-label='test' class='mobile-edit-container'><div class='cart-quantity'><input type='button' value='+' class='qtyplus qty-plus-2' field='updates_"+ cartItem.id +"'></input><input type='number' name='updates[]' id='updates_"+ cartItem.id +"' class='quantity' value='"+ cartItem.quantity +"'/><input type='button' value='-' class='qtyminus qtyminus-2' field='updates_"+ cartItem.id +"'></input></div></td><td data-label='{{ 'cart.label.total' | t }}' class='small--hide'>£"+ price +"</td></tr>");
             });
     $(function(index, cartItem) {
             var line2= index +1;
             var cents2 = "";

if (cart.total_price % 100 < 10) {
cents2 = "0";
}
var price2 = parseInt(cart.total_price/100) + "." + cents2 + cart.total_price % 100;
               $('.dropdown-cart-2').append("<div class='cart-total'><span class='order-first'>Total</span><span class='order-second'>"+ price2 +"</span></div>");
});
            });
            $('.drawer-main-form').css('display','none');
            // Re-enable add to cart button.
            $addToCartBtn.addClass('inverted');
            _setText($addToCartBtn, _config.addedToCartBtnLabel);
            _showFeedback('success',' ',$addToCartForm);
            window.setTimeout(function(){
              $addToCartBtn.prop('disabled', false).removeClass('disabled').removeClass('inverted');
              $addToCartForm.find('.swatch-element.option-selected').removeClass("option-selected");
              _setText($addToCartBtn,_config.addToCartBtnLabel);
            }, _config.howLongTillBtnReturnsToNormal);
            // Update cart count and show cart link.
            $.getJSON(_config.shopifyAjaxCartURL, function(cart) {
              if (_config.cartCountSelector && $(_config.cartCountSelector).size()) {
                var value = $(_config.cartCountSelector).html() || '0';
                $(_config.cartCountSelector).html(value.replace(/[0-9]+/,cart.item_count)).removeClass('hidden-count');
              }
              if (_config.cartTotalSelector && $(_config.cartTotalSelector).size()) {
                if (typeof Currency !== 'undefined' && typeof Currency.moneyFormats !== 'undefined') {
                  var newCurrency = '';
                  if ($('[name="currencies"]').size()) {
                    newCurrency = $('[name="currencies"]').val();
                  }
                  else if ($('#currencies span.selected').size()) {
                    newCurrency = $('#currencies span.selected').attr('data-currency');
                  }
                  if (newCurrency) {
                    $(_config.cartTotalSelector).html('<span class=money>' + Shopify.formatMoney(Currency.convert(cart.total_price, "{{ shop.currency }}", newCurrency), Currency.money_format[newCurrency]) + '</span>');
                  }
                  else {
                    $(_config.cartTotalSelector).html(Shopify.formatMoney(cart.total_price, "{{ shop.money_format | remove: "'" | remove: '"' }}"));
                  }
                }
                else {
                  $(_config.cartTotalSelector).html(Shopify.formatMoney(cart.total_price, "{{ shop.money_format | remove: "'" | remove: '"' }}"));
                }
              };
            });
          },
          error: function(XMLHttpRequest) {
            var response = eval('(' + XMLHttpRequest.responseText + ')');
            response = response.description;
            if (response.slice(0,4) === 'All ') {
              $addToCartBtn.prop('disabled', false);
              _setText($addToCartBtn, _config.soldOutBtnLabel);
              $addToCartBtn.prop('disabled',true);
            }
            else {
              $addToCartBtn.prop('disabled', false).removeClass('disabled');
              _setText($addToCartBtn, _config.addToCartBtnLabel);
            }
          }
        });
$.ajax({
url:_config.shoppifyajaxaddURL,
数据类型:“json”,
键入:“post”,
数据:$addToCartForm.serialize(),
成功:函数(itemData){
$.getJSON(_config.shoppifyajaxCartURL,函数(购物车){
$('.drawer refresh hide').css('display','block');
$.each(购物车项目,功能(索引,购物车项目){
var线=指数+1;
var仙=”;
如果(cartItem.price%100<10){
美分=“0”;
}
var price=parseInt(cartItem.price/100)+“+”美分+cartItem.price%100;
$('.dropdown cart').append(“+cartItem.product_title+”{%Inspect item.product.has_only_default_variant%}“+cartItem.variant_title+”{/p>{%EndInspect%}{%if“+cartItem.available+”%}库存{%endif%}数量+价格+);
});
$(函数(索引,cartItem){
var line2=指数+1;
var cents2=“”;
如果(购物车总价%100<10){
cents2=“0”;
}
var price2=parseInt(购物车总价/100)+“+”+cents2+购物车总价%100;
$('.dropdown-cart-2')。追加(“总计”+价格2+”);
});
});
$('.drawer主窗体').css('display','none');
//重新启用“添加到购物车”按钮。
$addToCartBtn.addClass('inversed');
_setText($addToCartBtn,_config.addedToCartBTLabel);
_showFeedback('success','',$addToCartForm);
setTimeout(函数(){
$addToCartBtn.prop('disabled',false.).removeClass('disabled').removeClass('inversed');
$addToCartForm.find('.swatch元素.option selected').removeClass(“option selected”);
_setText($addToCartBtn,_config.addToCartBtnLabel);
},_config.howlongtilbtnreturnstonormal);
//更新购物车计数并显示购物车链接。
$.getJSON(_config.shoppifyajaxCartURL,函数(购物车){
if(_config.cartCountSelector&&$(_config.cartCountSelector.size()){
var value=$(_config.cartCountSelector.html()||“0”;
$(_config.cartCountSelector).html(value.replace(/[0-9]+/,cart.item_count)).removeClass('hidden-count');
}
if(_config.cartotalSelector&&$(_config.cartotalSelector.size()){
if(货币类型!='undefined'&&typeof Currency.moneyFormats!=='undefined'){
var newCurrency='';
如果($('[name=“currences”]')。大小(){
newCurrency=$('[name=“currences”]')。val();
}
else if($('#货币span.selected').size()){
新货币=$(“#货币跨度.选定”).attr('data-currency');
}
if(新货币){
$(_config.cartotalSelector).html(“”+Shopify.formatMoney(Currency.convert(cart.total_price,{shop.Currency}}),newCurrency),Currency.money_格式[newCurrency])+“”);
}
否则{
$(|config.cartTotalSelector.html(Shopify.formatMoney(cart.total_price,{{shop.money_format{124; remove:'''}'));
}
}
否则{
$(|config.cartTotalSelector.html(Shopify.formatMoney(cart.total_price,{{shop.money_format{124; remove:'''}'));
}
};
});
},
错误:函数(XMLHttpRequest){
var response=eval('('+XMLHttpRequest.responseText+');
response=response.description;
if(response.slice(0,4)='All'){
$addToCartBtn.prop('disabled',false);
_setText($addToCartBtn,_config.soldoutbtnlab);
$addToCartBtn.prop('disabled',true);
}
否则{
$addToCartBtn.prop('disabled',false.).removeClass('disabled');
_setText($addToCartBtn,_config.addToCartBtnLabel);
}
}
});
这是可行的,但我对购物车项目的每个功能都有一个问题,所以这一点:

              $.each(cart.items, function(index, cartItem) {
                 var line= index +1;
                 var cents = "";

if (cartItem.price % 100 < 10) {
 cents = "0";
}
var price = parseInt(cartItem.price/100) + "." + cents + cartItem.price % 100;
        $('.dropdown-cart').append("<tr class='responsive-table-row'><td class='cart-first'><a href='"+ cartItem.url +"'</a><img src='"+ cartItem.image +"'/><a href='/cart/change?line="+ line +"&amp;quantity=0' class='qty-remove small--hide'><p class='small'>{{ 'cart.general.remove' | t }}</p></a><input type='submit' name='update' value='{{ 'cart.general.update' | t }}' class='qty-remove small small--hide ajax-submit'></td><td class='cart-second'><span class='CartTitle'>"+ cartItem.product_title +"</span>{% unless item.product.has_only_default_variant %}<p>"+ cartItem.variant_title+"</p>{% endunless %}{% if "+ cartItem.available +" %}<span class='stock-message'>In Stock</span>{% endif %}</td><td class='cart-mobile-last'><span>Quantity</span></td><td data-label='test' class='mobile-edit-container'><div class='cart-quantity'><input type='button' value='+' class='qtyplus qty-plus-2' field='updates_"+ cartItem.id +"'></input><input type='number' name='updates[]' id='updates_"+ cartItem.id +"' class='quantity' value='"+ cartItem.quantity +"'/><input type='button' value='-' class='qtyminus qtyminus-2' field='updates_"+ cartItem.id +"'></input></div></td><td data-label='{{ 'cart.label.total' | t }}' class='small--hide'>£"+ price +"</td></tr>");
             });
$。每个(购物车项目,功能(索引,购物车项目){
var线=指数+1;
var仙=”;
如果(cartItem.price%100<10){
美分=“0”;
}
var price=parseInt(cartItem.price/100)+“+”美分+cartItem.price%100;
$('.dropdown cart').append(“+cartItem.product_title+”{%Inspect item.product.has_only_default_variant%}“+cartItem.variant_title+”{/p>{%EndInspect%}{%if“+cartItem.available+”%}库存{%endif%}数量+价格+);
});
它可以填充购物车,但如果添加了多个产品,则项目会显示多次。下面是一个示例场景: 用户添加产品A。然后产品A显示在抽屉车中。 在不刷新页面的情况下,用户将添加产品B。购物车抽屉现在显示: -产品A -产品B -产品A(再次)

因此,each会执行两次(这很有意义),但不确定如何修复此问题,以便已添加的产品不会重复使用?

删除
$('.dropdown cart')
函数前面的

$('.dropdown-cart tr').remove();
$.each(cart.items ...)