2

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

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

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

}

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

有时没有要显示的记录。

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

4

3 回答 3

4

我假设它data.id是一个数组,因为你$.each在它上面使用过:

if (data.id.length == 0) {
  // no data
}
于 2012-09-23T08:59:38.903 回答
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 ');
    }

希望这可以帮助。

于 2012-09-23T09:24:36.203 回答
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”有问题(未定义),将显示一条消息“No Data”。或者当“SourceData”被初始化,但是例如有人改变了服务器返回数据的结构(不再是“ID”,现在是“TitleID”)不会产生错误。

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

于 2012-09-23T09:09:59.140 回答