我正在尝试构建一个带有bootstrap 4下拉菜单的产品比较模块。
在该下拉菜单中,列出了带有一些信息的产品。当您在产品上单击删除时,将加载名为updateCompare
的函数。此函数加载json数据并更新比较列表。除了仅列出一种产品外,所有这些都可以正常工作。当我在最后一项上单击删除时,该函数将引发错误。
所以我有这个:
function updateCompare(){
$.get(compareUrl + '?format=json', function(e) {
products = [];
$.each(e.compare.products, function(index, product) {
// ... code to build products ....
products.push(productHtml);
});
products.join('');
$('#compare .compare-inner .empty').html(products);
})
}
$(function(){
// delete product from compare
$(document).on("click", "#compare .remove", function(e) {
e.preventDefault();
var vid = $(this).closest('.item').data('vid');
var url = compareUrl + 'delete/' + vid;
$.ajax({
type: "POST",
url: url,
success: function(msg){
updateCompare()
}
});
});
});
我得到的错误是TypeError: a is undefined
我在updateCompare
中尝试过的事情是这样的:
function updateCompare(){
$.get(compareUrl + '?format=json', function(e) {
products = [];
if(e.compare.products.length > 1 ){
$.each(e.compare.products, function(index, product) {
// .... code to build products
});
} else {
$('#compare').dropdown("dispose")
}
但上面会引发类似以下错误:TypeError: e.compare.products is undefined
我也尝试过:
if(e.compare.products.length > 1 || e.compare.products != NULL || e.compare.products != false ){
但这会引发错误e.compare.products is undefined
。
我从事这种工作的时间已经太久了,所以也许我错过了一些非常简单的事情。我只是看不到了:(
任何帮助都非常感谢!
根据请求
空比较json:
{
"compare":false
}
带有3种产品的JSON:
{
"compare":{
"products":[
{
"id":39687158,
},
{
"id":39687161,
},
{
"id":39687164,
}
]
},
}