我正在使用此代码从json获取数据。
$.each(data.id, function(index, value){
output += '<li>'+value.title+'</li>';
}
$('#listview').html(output).listview('refresh');
有时候没有要显示的记录。
如何知道是否没有记录并显示警告示例:alert('No records'); ?
答案 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”)将不会生成错误。
注意,我正在使用“|”而不是“||”。这意味着,如果其中一个条件是“真实”,他的调解权将不会被执行。