2011-02-02 9 views
0

인사말을 액세스 할 때 정의되지 않은 반환,자바 스크립트 객체 : 속성을 설정하지만

나는과 같이 정의 된 자바 스크립트 객체와 함께 일하고 있어요 : 나는 다음의 내부에 값을 할당

var ytVideoData = new Object(); 

jQuery .ajax() :

$.ajax({ 
    type: "GET", 
    url: "xmlproxy.php?url="+ytId+"&mode=native", 
    success: function(data) { 

     ytVideoData.thumbnail = $(data).find("media\\:thumbnail[yt\\:name='default']").attr("url"); // default thumbnail image 
    } 
}); 

또 다른 기능으로, 방금 설정 한 축소판 속성에 액세스하려고합니다. 그러나, 내가 할 때 :

function addPlaylistItem(tumblrUser, videoData) { 
    console.log(videoData.thumbnail); 
} 

나는 "undefined"이다. 나는 할 때 :

console.log(videoData); 

내가 콘솔에 로그인 한 전체 개체를 얻을 적절히과 같이 객체의 내부 설정 썸네일 속성을 볼 수 있습니다 여러 가지 방법 I 시도 후

http://mp3.deceast.com/js-objectissue.jpg

을 그냥 작동시킬 수없는 것 같습니다. 이 객체 속성에 어떻게 액세스합니까?

+2

에서 함수를 호출 시도인가? – Raynos

+2

'addPlaylistItem()'호출뿐만 아니라 ajax 호출을 포함하는 코드를 보여줄 수 있습니까? 'success' 콜백 ** 내에서 **가 아닌 **'$ .ajax()'후에'addPlaylistItem()'**을 호출하면, ** 요청은 * * 비동기 **. 이 질문은 적어도 하루에 한 번 물어 봅니다. –

+0

ajax 호출의 성공 함수가 다른 함수보다 먼저 실행된다는 것은 긍정적입니까? – Victor

답변

0

ajax를 통한 콜백은 비동기입니다. 그것은 성공 함수가 언제 실행되는지 알 수 없음을 의미합니다. 아마 무슨 일이 일어나고

순서는

$.ajax 
addPlaylistItem // undefined 
success // defined 

가 어떻게 asynchrous 콜백 잘 작동 알고있는 성공 포스트 백

success: function(data) { 
    ytVideoData.thumbnail = $(data).find("media\\:thumbnail[yt\\:name='default']").attr("url"); // default thumbnail image 
    addPlaylistItem(getTumblrUser(), ytVideoData); 
} 
+0

ajax 호출에서 async 속성을 false로 설정하려고 시도했지만 여전히 동일하게 동작합니다. 내가 혼란스러워하는 부분은 콘솔에 전체 개체를 기록 할 때 속성이 올바르게 설정되어 있음을 볼 수 있지만 개체 속성 자체를 기록하면 정의되지 않은 것으로 나타납니다. –

+0

@Matt : 행동을 재현하는 링크 및/또는 ajax 호출이 어떻게'addPlaylistItem()'호출과 관련되어 있는지 보여주는 완전한 코드 샘플을 게시 할 수 있습니까? 당신은 올바른 객체를'addPlaylistItem()'에 전달하고 있습니까? –

+0

@MattR 비동기 false를 사용하지 마십시오. 그것은 나쁘다! 당신이 어떻게 거기에 버그가있을 수 있습니다 addPlaylistItem 수 없습니다 확인하십시오 – Raynos