检查json数据长度是否不起作用

时间:2018-08-09 13:58:37

标签: javascript jquery arrays json

我正在尝试构建一个带有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,
         }
      ]
   },

}

0 个答案:

没有答案