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