一部のライブストリームのオンラインステータスと視聴者数を取得しようとしています。AJAXによって自分のサイトからオブジェクトの配列を取得しています。次に、配列を反復処理して、これらのオブジェクトに値を追加しています。問題は、これらのオブジェクトの内容をコンソールに記録すると、新しく作成されたキーが見つかりましたが、そのキーの値をログに記録しようとすると、未定義であると表示されることです。
$.each(livestreams, function () {
if(this.provider === 'TwitchTV') {
$.ajax({
url: 'http://api.justin.tv/api/stream/list.json?channel=' + this.channel.toLowerCase(),
dataType: 'jsonp',
jsonp: 'jsonp',
success: $.proxy(function (stream) {
this.live = true;
this.count = stream[0].channel_count;
}, this)
});
} else {
$.ajax({
url: 'http://api.own3d.tv/liveCheck.php?live_id=' + this.channel,
dataType: 'xml',
success: $.proxy(function (stream) {
this.live = stream.find('isLive').text();
this.count = stream.find('liveViewers').text();
}, this)
});
}
console.log(this);
/* returns
channel: "garenatw"
count: 8237
id: "3"
live: true
name: "garena"
provider: "TwitchTV"
username: "grifon"
__proto__: Object
(of course, only for this specific object)
*/
console.log(this.live); // returns undefined
});