2013-05-03 14 views
8

dostaję z powrotem następujące JSON:JavaScript: Jak sprawdzić, czy odpowiedź JSON tablica jest pusta

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

A ja sprawdzając je za pomocą następujących, pozornie wyczerpująca, 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'); 
      } 
     } 
}); 

Ale alert nie uruchamia się. : [

+3

Co pokazuje "console.log (siteArray)"? – Dennis

+0

[]. Próbowałem jeśli siteArray === "[]", ale to nie zadziałało ani – Lurk21

+0

Pusta tablica nie jest taka sama jak 'null',' undefined', i in. – Phrogz

Odpowiedz

19

Zastosowanie aby sprawdzić, czy obiekt jest tablicą. Następnie możesz sprawdzić prawdziwość właściwości length, aby sprawdzić, czy jest pusta.

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

To się udało i jest o wiele bardziej elegancka – Lurk21

+2

To niefortunne rozwiązanie tego pytania. Dlaczego to działa, ale kod OP nie? – Dennis

1

Dwie puste tablice nie różnią się od siebie, ponieważ nie są tym samym obiektem.

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

użytkowania if (siteArray.length==0) aby sprawdzić, czy tablica jest pusta, lub prościej if (!siteArray.length)

+1

OP robi to ... – Dennis

+0

@Dennis Dobra rada, przewinięto okno i nie widziałem. Niemniej jednak będzie działać dla pustej tablicy. Potrzebnych jest więcej danych:/ – Phrogz

Powiązane problemy