2013-05-03 2 views
8
나는 다음과 같은 JSON 다시 받고 있어요

비어있는 경우 테스트하는 방법 :자바 스크립트 : 어떻게 응답 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

두 개의 빈 배열은 서로 같지 않습니다. 두 개의 빈 배열은 동일한 개체가 아니기 때문에 서로 다릅니다.

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

사용 if (siteArray.length==0)

단순히 if (!siteArray.length)

+1

OP는 ... – Dennis

+0

@Dennis 좋은 점은 창문 밖으로 스크롤되어 보지 못했습니다. 그럼에도 불구하고 그것은 빈 배열에 대해 작동합니다. 더 많은 데이터가 필요합니다 :/ – Phrogz

관련 문제