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
jqueryajax问题_Jquery_Ajax_Json_Shopp - Fatal编程技术网

jqueryajax问题

jqueryajax问题,jquery,ajax,json,shopp,Jquery,Ajax,Json,Shopp,我研究这段代码已经有一段时间了,但不确定我做错了什么。基本上,我想创建一个循环,打印出购物车中的所有项目。如果我取出循环,它会打印刚刚添加的项目,但当我添加循环时,它会中断 我对jQuery/JSAON不太熟悉,所以如果有人能指出我可能会出错的地方,那就太好了 (编辑-完整js文件) var ShoppCartAjaxHandler=函数(购物车){ (函数($){ var display=$('shopp cart ajax'); display.empty().hide();//清除以前添加

我研究这段代码已经有一段时间了,但不确定我做错了什么。基本上,我想创建一个循环,打印出购物车中的所有项目。如果我取出循环,它会打印刚刚添加的项目,但当我添加循环时,它会中断

我对jQuery/JSAON不太熟悉,所以如果有人能指出我可能会出错的地方,那就太好了

(编辑-完整js文件)

var ShoppCartAjaxHandler=函数(购物车){
(函数($){
var display=$('shopp cart ajax');
display.empty().hide();//清除以前添加的内容
var item=$('
    )。附录(显示); $.each(cart.items,function(){ $(“
  • ”)html(“”+this.quantity+”“+this.name”)。附录(项目); }); //$(“
  • ”).html(“”+cart.Item.quantity+”x'+cart.Item.name)。附录(Item); $(“
  • ”).html(“子总计””+asMoney(购物车总计.小计)).appendTo(项目); $(“
  • ”).html(“配送”+asMoney(cart.Totals.Shipping)).appendTo(项目); $('
  • ').html('Total'+asMoney(cart.Totals.Total)).appendTo(item); 如果($('#购物车项目')。长度>0){ $('#shopp cart items').html(cart.Totals.quantity); $('#shopp cart total').html(asMoney(cart.Totals.total)); }否则{ $('.widget\u shoppcartwidt p.status').html('

    '+cart.Totals.quantity++x'+cart.Item.name++

    小计

    配送+asMoney(cart.Totals.Shipping)+/p>

    Total'+asMoney(cart.Totals.Total)+'

    '; } display.slideDown(); })(jQuery) }
    请将您的通话更改为$。如下所示:

    $.each(
      cart.items,
      function() {
        $("<li></li>").html("<strong>" + this.Quantity + "</strong>" +
          this.name).appendTo(item);
      }
    );
    
    $。每个(
    购物车。物品,
    函数(){
    $(“
  • ”)html(“”+此.Quantity+”)+ (项目)的附录; } );
    以下各项应能起作用。检查每个项目是如何调用的,“this”指的是迭代的项目。我还更改了变量“ul”来表示列表,以便更清楚地了解发生了什么。最后,确保您的购物车如下所示:

    var cart = { 
        items: [
            {quantity: 1, name: 'asjdfkj' },
            {quantity: 1, name: 'asjdfkj' },
            {quantity: 1, name: 'bkag' }
                ],
        Totals: { 
            subtotal: 12.95, 
            shipping: 2.34, 
            total: 15.00
        }
    
    };
    
    var asMoney=function(s) { return s; }
    
    
        var display = $('#shopp-cart-ajax');
        display.empty(); // clear any previous additions
        var ul = $('<ul class="sidecart_list"></ul>').appendTo(display);
    
        $.each(cart.items, function() {
          $('<li></li>').html('<strong>'+this.quantity+'</strong> x '+this.name).appendTo(ul);
        });
     $('<li></li>').html('<strong>Subotal</strong>'+asMoney(cart.Totals.subtotal)).appendTo(ul);
     $('<li></li>').html('<strong>Shipping</strong>'+asMoney(cart.Totals.shipping)).appendTo(ul);
        $('<li></li>').html('<strong>Total</strong> '+asMoney(cart.Totals.total)).appendTo(ul);
    
    var-cart={
    项目:[
    {数量:1,名称:'asjdfkj'},
    {数量:1,名称:'asjdfkj'},
    {数量:1,名称:'bkag'}
    ],
    总数:{
    小计:12.95,
    航运:2.34,
    总数:15.00
    }
    };
    var asMoney=函数{return s;}
    var display=$('shopp cart ajax');
    display.empty();//清除以前添加的所有内容
    var ul=$('
      )。附录(显示); $.each(cart.items,function(){ $('
    • ').html(''+this.quantity+'x'+this.name).appendTo(ul); }); $(“
    • ”).html(“子总计””+asMoney(cart.Totals.subtotal)).appendTo(ul); $('
    • ').html('配送'+asMoney(cart.Totals.Shipping)).appendTo(ul); $('
    • ').html('Total'+asMoney(cart.Totals.Total)).appendTo(ul);
      这一行似乎是您的问题:

      var item = $('<ul class="sidecart_list"></ul>').appendTo(display);
      
      var item=$('
        )。附录(显示);

        您正在将所有项目附加到仅最初附加到显示的对象。最好是将以下所有项目直接附加到显示屏上,或者在填充后将项目对象附加到显示屏上。

        谢谢您的回答。该循环现在似乎正在工作(它不是默认的内置js文件),但我没有得到任何输出。我将“cart.items”改为“cart.Item”,并打印了大量“未定义”的内容,但其他内容不多。您已经从打印出来的字符串中删除了“cart”。脚本是否仍然需要引用购物车?Aaron,我假设您试图将当前项目的质量包含到列表项目中。回调函数中的this关键字始终引用当前项目(它是cart.items集合中的项目之一)。循环不起作用,因为购物车项目是通过cart.Contents访问的。现在一切都好了,谢谢你。小计/发货/总计实际上已经打印出来了。只是它只显示刚刚添加的项目,而不是购物车中的所有项目。假设我有:2个项目a 1个项目b小计$xx发货$yy总计$zz在将另一个项目a添加到购物车后,购物车刷新,但仅显示:3个项目a小计$xx发货$yy总计$Zzaron,您确定您的购物车已正确填充并包含所有项目,而不是仅包含最近添加的项目吗?嗨,David,我想这就是我错的地方。我不确定如何更新包含已添加元素的
          ,因此我认为可以在添加新项目时替换它。。。我已经更新了顶部的脚本,以显示整个js文件,以及我所处的位置。Aaron,如果您想要保持一个持久的UL,您可以像这样获取它:var UL=$(“UL.sidecart_lis”)。这是一种方法。虽然我确实觉得在对购物车进行调整时维护购物车会更容易(删除很棘手)。也许您可以全局存储cart JavaScript对象(例如,window[“cart”]),并在对其进行更改时对其进行维护。谢谢David。我不太担心保持持久性,所以用另一个替换它真的很好。该脚本当前更新了div#shopp cart ajax,并将ul#shopp cart项目替换为ul.sidecart_列表。唯一不起作用的是我无法打印出所有购物车元素。如果我可以打印出刚刚添加到购物车的项目,那么我应该能够打印出购物车中的所有项目?不是吗?我感觉它就快到了,但由于某种原因,循环正在破坏脚本。仍在继续。。。我已经包括了console.debu
          var item = $('<ul class="sidecart_list"></ul>').appendTo(display);