2011-02-02 10 views
0

挨拶にアクセスしたとき、未定義返し、JavaScriptオブジェクト:プロパティセットが、

私はそうのように定義されたJavaScriptオブジェクトで働いている:私は、その後の内部でそれに値を代入

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); 
} 

私がコンソールに得るのは「未定義」です。私が行うときは:私は

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

、いくつかの異なる方法を試した後:

console.log(videoData); 

私は、オブジェクト全体がコンソールに記録し、適切にそのようなオブジェクトの内部で設定されたサムネイルのプロパティを見ることができます取得しますちょうどそれを働かせるように見えることができません。このオブジェクトプロパティにアクセスするにはどうすればよいですか?

+2

で関数を呼び出してみますか? – Raynos

+2

ajax呼び出しと 'addPlaylistItem()'呼び出しを含むコードを表示できますか? 'success'コールバック**の中ではなく、**' $ .ajax() 'の後に' addPlaylistItem() '**を呼び出すのであれば、このリクエストは* *非同期**。この質問は1日に1回、少なくとも_一度尋ねられます。 –

+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はasync falseを使用しません。それは悪いです!あなたがどのようにaddPlaylistItemを見つけられないのかを確認してください。そこにはバグがあります – Raynos

関連する問題