JSON检查是否有可用数据

时间:2012-09-23 08:55:17

标签: javascript jquery

我正在使用此代码从json获取数据。

$.each(data.id, function(index, value){

output += '<li>'+value.title+'</li>';

}

$('#listview').html(output).listview('refresh');

有时候没有要显示的记录。

如何知道是否没有记录并显示警告示例:alert('No records'); ?

3 个答案:

答案 0 :(得分:4)

我假设data.id是一个数组,因为您在其上使用了$.each

if (data.id.length == 0) {
  // no data
}

答案 1 :(得分:3)

通常在javascript中使用此代码来检查数组是否为空:

 if (myArray.length) {  // javascript shortcut for data.id.length>0
        alert('no elems found');
    }

在您的特定情况下,以下代码应该有效:

   if (data.id.length) { 
        $.each(data.id, function(index, value){
        output += '<li>'+value.title+'</li>';
        });
        $('#listview').html(output).listview('refresh');
    } else {
        alert('no records found ');
    }

希望这有帮助。

答案 2 :(得分:1)

检查对象中是否有数据的最常用方法是使用

 length

方法

但你应该非常小心。例如,如果您的数据采用以下格式:

SourceData =[
                {
                    ID:1,
                    Title:'Test1',
                },
                {
                    ID:2,
                    Title:'Test2',
                },
                {
                    ID:3,
                    Title:'Test3',
                },
            ]

你做了以下检查:

if(SourceData.ID.length>0)

由于某种原因(服务器上的错误,请求超时等),未定义“SourceData”,将引发JavaScript错误。

这就是我使用条件组合的原因:

if(typeof SourceData==='undefined'|typeof SourceData.ID==='undefined'|SourceData.ID.length==0) 

然后,如果“SoruceData”出现问题(未定义),将显示“无数据”消息。或者当“SourceData”被初始化时,但是例如某人已经改变了来自服务器的返回数据的结构(它不再是“ID”,它现在是“TitleID”)将不会生成错误。

注意,我正在使用“|”而不是“||”。这意味着,如果其中一个条件是“真实”,他的调解权将不会被执行。