【问题标题】:How to check if JSON return is empty with jquery如何使用jquery检查JSON返回是否为空
【发布时间】:2012-12-30 00:36:29
【问题描述】:
$.getJSON(url, function(json) {
  var output = '';
  $.each(json, function(i,d) {

    if(d.DESCRIPTION == 'null'){ 
      console.log("Its empty");
    }
    var description = d.DESCRIPTION;
    output += '<tr><td>'+d.NAME+'</td><td>'+'<tr><td>'+d.DESCRIPTION+'</td><td>';
  });
});

我尝试添加

if(d.DESCRIPTION == 'null'){ console.log("Its empty"); 

检查返回的对象是否为空,但不起作用。

谁能解释一下这有什么问题?

【问题讨论】:

  • 如果升级到jQuery 1.9,如果没有返回json字符串,它会正确的进入错误回调。
  • 如果您想检查数组的对象是否包含空数据,我们需要查看您的 json 字符串中返回的确切内容,因为它可能因服务器端语言和你生成 json 的方法。
  • @KevinB 我得到的只是控制台上的文本“null”
  • @adeneo 试过了。没用=/
  • @BaconJuice 控制台在哪里?控制台有许多不同的部分,我没有看到会产生 null 的 console.log()。请求"null" 的responseText 是什么?还是""

标签: javascript jquery ajax json


【解决方案1】:

下面的代码(jQuery.isEmptyObject(anyObject) 函数已经提供)可以完美运行,无需自己编写。

   // works for any Object Including JSON(key value pair) or Array.
  //  var arr = [];
  //  var jsonObj = {};
    if (jQuery.isEmptyObject(anyObjectIncludingJSON))
    {
       console.log("Empty Object");
    }

【讨论】:

    【解决方案2】:

    只测试数组是否为空。

    $.getJSON(url,function(json){
        if ( json.length == 0 ) {
            console.log("NO DATA!")
        }
    });
    

    【讨论】:

    • JSON 对象没有“长度”属性,因此如果您得到的响应不是 Array 实例,您最终会得到“没有数据!”即使对象不为空,也会一直发送消息。这个答案如何最终获得批准并获得比 Arun Pratap Singh 先生的正确答案更多的声誉对我来说是一个谜。
    • @Soul_man 对,但在这种情况下,它显然是一个数组。 “@KevinB 抱歉,控制台中的响应文本实际上是 []。”
    • 在我的情况下,长度未定义
    • @Mo.Ashfaq 那么你没有数组。你有什么?
    • @amit_kumar 是的。
    【解决方案3】:
    if (!json[0]) alert("JSON empty");
    

    【讨论】:

    • 嗨,贾斯汀,最好在您的代码中提供一些解释,而不是提问者会理解为什么该特定代码有效。
    • 这是唯一对我有用的解决方案。你能解释一下发生了什么吗?谢谢!
    • 它正在检查第一个对象是否存在。如果 JSON 有什么,就会有第一个对象。
    • 这仅适用于数组,但不适用于键值对象的 ex。 var someJSON = {'name': 'Justin Levene'}
    【解决方案4】:

    你可以使用 $.isEmptyObject(json)

    https://api.jquery.com/jQuery.isEmptyObject

    【讨论】:

    【解决方案5】:
    $.getJSON(url,function(json){
    if ( json.length == 0 ) 
    {
    console.log("NO !")
    }
    });
    

    【讨论】:

    • 嗨,欢迎来到 Stack Overflow。请查看how to write good answers。另外,这个问题很久以前就已经回答了,如果你能把时间花在更多recent questions上,我们会很高兴。
    猜你喜欢
    • 1970-01-01
    • 2016-10-04
    • 2015-12-24
    • 2021-02-03
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多