2012-09-23 51 views
1

我正在使用此代碼從json獲取數據。JSON檢查是否沒有數據

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

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

} 

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

有時沒有要顯示的記錄。

如何知道是否沒有記錄並顯示警報示例:alert('No records'); ?

+1

我很困擾。它不應該是'$ .each(data,...)'嗎? – Alexander

+0

例如,'if(data.id.length === 0){alert(「No records」);返回; }'。 – VisioN

+0

揭示響應JSON的* expected *結構肯定會有所幫助 –

回答

3

假設data.id是一個數組,因爲你就可以用$。每個:

if (data.id.length == 0) { 
    // no data 
} 
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」),不會產生錯誤。

請注意,我使用「|」而不是「||」。這意味着,如果其中一個條件是「真實的」,他的權利就不會被執行。

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 '); 
    } 

希望這有助於。