首页 > 解决方案 > 如果 $.each() 之前的 json 响应为空,则检查 $.each() 内的 var 内容

问题描述

$(document).ready(function() {
  $.getJSON("https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/states/notams/notams-list?format=json&api_key=90824210-70a2-11ea-9997-6943540cb84c&locations=opla", function(data) {

    //opst at the end of url points to an empty json file []. If opst is changed to opla then it points to a json file with data. 

    $.each(data, function(key, value) {

      var obj = value.Subject;

      if ($('obj').val() === '') {
        console.log("empty"); // with opst (json file with no data) this is expected but it is not shown.
      } else {
        console.log("not empty"); // with opla (json file with data) this is expected and it is shown correctly as expected.
      }

    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

尝试检查 json 文件中的内容。如果 json 文件有数据,则 console.log 显示“not empty”,但如果 json 文件没有数据(即只有 []),console.log 不会显示“empty”。代码是:

$(document).ready(function(){
    $.getJSON("url/test.json",function(data) {
        $.each(data, function(key,value) {
            var obj = value.Subject;
            //  OPTION 1
            if(obj=="") {
                console.log("empty"); //This does not work
            } 
            else {
                console.log("not empty"); //This works
            }       
        });
    });
});

我尝试过的其他选择是:

//  OPTION 2
if ($('obj').val() === '') { 
    console.log("empty"); //This does not work
} else {
    console.log("not empty"); //This works
}    

// OPTION 3
if(Object.keys(obj).length === 0 && obj.constructor === Object){
    console.log("empty"); //This does not work
} else {
    console.log("not empty"); //This works  
}

但结果是一样的。看起来我在所有情况下都犯了同样的错误。需要帮助来识别错误。谢谢。

标签: javascriptjquery

解决方案


所以你可以编写实用函数

function isEmpty(obj) {
    for(var key in obj) {
        if(obj.hasOwnProperty(key))
            return false;
    }
    return true;
} 

然后在ajax调用之后

if(data.isEmpty()) {
    console.log("empty");
} else {
     console.log("no empty");
}

推荐阅读