2012-05-04 2 views
1

자바 스크립트/JQuery 멍청한데, 사과드립니다.TypeError 'undefined'가 Javascript/Jquery JSON 파서의 객체가 아닙니다

나는 아래의 코드를 반복하여 JSON 객체를 가져와 페이지에 필드를 추가하기 위해 .ajax을 사용하고 있습니다. 쉬운.

$.each(data, function(i, item) { 
    $("#div-ipos").append(
     "<img src=" + item.user.avatar_small_url + ">&nbsp;" 
     + item.user.first_name 
     + "<hr /><br />" 
    ); 
}); 

그것은 작동하고 출력이 예상되는 등의 <img> 태그에 전달 된 아바타 경로 완료.

그러나 나는 다음과 같은 오류가 발생합니다 :

TypeError: 'undefined' is not an object (evaluating 'item.user.avatar_small_url')

무엇이 상황에서 제대로 동작하도록하기 위해 내가 그 변수에 어떻게해야합니까?

+2

사용'item.user' 아래와 같이 그 배열 상태로 존재하는지 체크하여 만약 페치 전에? 후자는 '정의되지 않은'것으로 보인다. –

+0

@ FrédéricHamidi 죄송합니다 - 수정되었습니다, 잘못된 복사/붙여 넣기를 사용하고 있습니다. 무시하세요! :) –

+0

JSON 개체의 일부 항목에 'user' 속성이 누락 되었습니까? 이 경우 루프의 상황을 테스트해야합니다. –

답변

1

$.each 앞에있는 console.log(data);을 사용하여 내용을 확인하십시오. 대부분 서버 응답에는 사용자가없는 추가 배열 요소가 포함되어있을 가능성이 큽니다.

[{"user":{"avatar_small_url":"foo","first_name":"bar"}}, 
{"user":{"avatar_small_url":"bar","first_name":"foo"}}, 
{"something_other_than_user":9000}] 

마지막 배열 요소는 "사용자"가없는 방법 : 같은 그래서 JSON을 볼 수 있었다. 서버 코드에 액세스 할 수있는 경우 사용자를 항상 수정할 수 있도록 수정하거나 사용자 입력란이 다음과 같이 존재하지 않는 경우 조기 종료되도록 자바 스크립트를 수정할 수도 있습니다. if(typeof item.user == 'undefined') return;

+0

두 경우 모두 'item'내의 'user'내에 있지만 'user'가 아닌 다음 레벨에 다른 필드가 있습니다. 어떻게 영향을 줍니까? user.avatar_small_url though? –

+0

@evilswan'console.log (data);는 무엇을 출력합니까? – Paulpro

+0

는 말합니다 : "ReferenceError : 변수를 찾을 수 없습니다 : 데이터" –

0

item.user와 같은 소리가 정의되지 않았거나 항목이 정의되지 않았습니다. 항목의 가치를 확인 했습니까? 나는 당신이 그것이 그것이 아닌 것으로 기대하고 있다고 생각합니다.

+0

'item'은 (는) JSON 내의 항목입니다 ... –

+0

Oh 각각의 작동 방식은 알고 있지만 항목의 가치를 확인하여 항목의 가치가 무엇인지 확인해야합니다. 분명히 이것은 예상 한 것과 얻을 수있는 내용이 일치하지 않습니다. – Jack

+0

콘텐츠를 어떻게 출력 할 수 있습니까? 'item'을 확인하려면 콘솔에? –

0

키 대신 'item.sender`의

if(key in User) 
{ 
    User[key] 
} 
관련 문제