2013-12-20 3 views
0

ajax 요청의 성공 콜백에서 하나의 객체를 얻습니다.이 객체는 객체 배열 (poList)입니다. 이 목록을 통해 반복하고 싶은 경우 status 속성이 있다면 뭔가를하십시오. 아래 예에서 자바 스크립트 배열에서 항목의 단일 속성 가져 오기

response.PoList 두 그 항목과 함께 x 유효한 배열 객체 (디버거에서, I는 PoList 가리키면하고 작동) 0이다; 그러나 status은 존재하지 않습니다 (즉,이 if 문은 항상 false입니다). 내가 잘못 여기서 뭐하는 거지

for (var x = 0; x < response.PoList.length; x++) { 
    if (response.PoList[x].Status == 'Not edited') { 
     response.PoList[x].StatusNum = 1; 
    } else { 
     response.PoList[x].StatusNum = 3 
    } 
} 

편집

페이지의 스크린 샷은 아래에, 나는 그것이 대소 문자 구분 문제를 생각하지 않습니다. 그럼, 강조 것은 response.PoList (단지 response), x는, 현재 0입니다 내가 Status 위에 마우스를 올려 경우, 나는 (더 "undefined는"툴팁하거나 아무것도)의 실존에 대한

enter image description here

+3

게시물에 두 가지 다른 대문자 사용 스타일을 사용하고 poList 및 상태를 코딩합니다. 자바 스크립트는 대소 문자를 구분합니다. 대문자 문제입니까? –

+0

for 루프가 올바르게 보입니다. Status 속성이 값을 확인하기 전에 존재하는지 확인하는 것이 좋습니다. –

+0

스크린 샷을 추가했는데 질문을 입력 할 때 대소 문자를 구분하지 않습니다. – Tom

답변

2

귀하의 코드 작품 제공된대로 - 실제로는 귀하의 데이터와 실제로 일치하는지 여부에 달려 있습니다.

Live Demo

나는 당신의 코드를 기반으로이 예제를했다. 응답 객체가 다른 경우, 예, 당신은 뭔가 잘못하고 있습니다.

또한 echo Mr. Zimmerman's comment; 이것은 쉽게 자본화 문제가 될 수 있습니다.

response = { 
    PoList: [ 
     { 
      foo: 'bar', 
      Status: 'edited' 
     }, 
     { 
      foo: 'baz', 
      Status: 'Not edited' 
     }, 
     { 
      foo: 'barbar', 
      Status: 'Not edited' 
     } 
    ] 
}; 

for (var x = 0; x < response.PoList.length; x++) { 
    if (response.PoList[x].Status === 'Not edited') { 
     response.PoList[x].StatusNum = 1; 
    } else { 
     response.PoList[x].StatusNum = 3; 
    } 
} 
+0

흥미 롭군요 ... 내게 마치 그렇게하고있는 것 같지만, 똑같은 것은 아닙니다. – Tom

+0

질문에 응답하는 정확한 응답 개체를 붙여 넣을 수 있습니까? (복사 할 수있는 버전을 얻으려면 JSON.stringify()를 사용하십시오.) – Nate

+0

http://pastebin.com/Qyk2KzeF – Tom

0

확인 아무것도 얻을 response.PoList[x].Status :

for (var x = 0; x < response.PoList.length; x++) { 
    if (response.PoList[x].Status && response.PoList[x].Status == 'Not edited') { 
    response.PoList[x].StatusNum = 1; 
    } else { 
    response.PoList[x].StatusNum = 3 
    } 
} 

Fiddle

0

여기에 세미콜론이 누락되었습니다. response.PoList[x].StatusNum = 3. 그 외에도 제공된 코드에 아무런 문제가 없으므로 PoList의 변수 Status을 응답에 설정하면 안됩니다.

관련 문제