2013-05-03 12 views
8
私は、次のJSON戻って取得しています

空であるかどうかをテストするために:Javascriptを:どのように応答JSON配列が

{"array":[],"object":null,"bool":false} 

をそして、私は次のようにそれをテストしています、一見網羅、if文:

$.ajax({ 
     type: "GET", 
     url: "/ajax/rest/siteService/list", 
     dataType: "json", 
     success: function (response) { 
      var siteArray = response.array; 

      // Handle the case where the user may not belong to any groups 
      if (siteArray === null || siteArray=== undefined || siteArray=== '' || siteArray.length === 0) { 
          window.alert('hi'); 
      } 
     } 
}); 

しかし、警告は発していません。 :[

+3

'console.log(siteArray)'はあなたに何を表示しますか? – Dennis

+0

[]。私はsiteArray === "[]"を試みましたが、どちらも動作しませんでした – Lurk21

+0

空の配列は 'null'、' undefined'などと同じではありません。 – Phrogz

答えて

19

使用オブジェクトが配列であるかどうかをチェックします。次に、lengthプロパティの真偽をチェックして、空であるかどうかを確認することができます。

if(!$.isArray(siteArray) || !siteArray.length) { 
    //handler either not an array or empty array 
} 
+1

それはそれをしました、それははるかにエレガントです – Lurk21

+2

それは質問への不幸な解決です。なぜこれは機能するのですか?OPのコードはどうでしたか? – Dennis

1

2つの空の配列は、同じオブジェクトではないため、互いに同じではありません。

var a = []; 
if (a === []){ 
    // This will never execute 
} 

使用if (siteArray.length==0)配列が空、またはそれ以上であるかどうかを確認するために単にif (!siteArray.length)

+1

OPはそうです... – Dennis

+0

@Dennis良い点、それは窓からスクロールされ、私はそれを見ませんでした。それにもかかわらず、それは空の配列のために働くでしょう。より多くのデータが必要です:/ – Phrogz

関連する問題