JS:
$('.product').each(function(){
$parent = $(this);
$.ajax({
url: $parent.attr('url'),
cache: false,
dataType: 'text',
success: function(data){
$parent.text(data);
}
});
});
对于每种产品,我想加载一些数据,比如价格。我知道each
函数不适用于此,因为each
不等待async ajax
进程完成。
在我的例子中,只有最后一个产品充满了数据。
如何在文档加载时加载每个产品的数据?这种情况有共同的技术吗?是应该一次性要求所有产品还是另一个产品?
答案 0 :(得分:1)
在javascript中创建一个包含所有产品ID的数组,然后在该数组的间隔内调用$ .ajax,在第一个ajax调用的finish事件上,检查数组中是否还有产品和再次触发ajax调用,直到数组为空。通过这种方式,您可以获得缓冲的产品,而无需并行进行ajax调用。
答案 1 :(得分:1)
原因:在您的代码中$parent
未在本地声明,因此成为全局变量。因此,$('.product').each() { .. }
的最后一次迭代会将其覆盖为DOM中的最后一个$('.product')
元素。
解决方案:如果您将$parent = $(this);
更改为var $parent = $(this);
,则可能会开始正常运行。