おはよう。私は要素のマウスホバーで、ビデオの好き嫌いに基づいてビデオ評価を計算しています。私のコードの一部は以下の通りです。Uncaught TypeError:未定義のプロパティ 'statistics'を読み取ることができません(jquery、youtube api v3)
...
$(".item-overlay").hover(
function() {
var video_id = $(this).find(".item-overlay-video-url").text();
var video_api = "https://www.googleapis.com/youtube/v3/videos?part=statistics&id="+video_id+"&key="+api;
$.getJSON(video_api,
function(data) {
var likes = parseInt(data['items'][0]['statistics']['likeCount']);
var dislikes = parseInt(data['items'][0]['statistics']['dislikeCount']);
var total = likes+dislikes;
var percentage = Math.round((likes/total) * 100);
var found = false;
...do code below to display star ratings...
私のコードは正常に動作し、星の評価は適切に表示されます。しかし、私は私のコンソールでこのエラーを取得しておいてください。 キャッチされない例外TypeError:この行で未定義
のプロパティ「統計」を読み込めません:私はこれを取得していますなぜ
var likes = parseInt(data['items'][0]['statistics']['likeCount']);
誰も教えてもらえますエラー? 「likes」変数は、ビデオに適切な数の好き嫌いを返し、適切に計算されるため、空/空にすることはできません。もちろん、私のコードは正常に動作しています。ちょうどこのエラーを投げる。
ありがとうございました。
EDIT:ログ出力(console.log(data ['items'] [0]);)のスクリーンショットを、Luiz Eduardo de Christoのリクエストごとに追加しました。
それは、私は非常に迅速に異なる要素にカーソルを合わせると、このエラーはのみ表示されることを意味をなすだろうか?同じように、別の曲をあまりにも速くホバリングしますか?おそらくコードより速く続けることができますか?遅延を追加するとこのエラーの原因になりますか?あまりにも頻繁にリクエストされた場合、getJSONがどのように動作するのでしょうか?
EDIT 2:youtubeの 'statistics'オブジェクトの返された結果のスクリーンショットを追加しました。この問題を持つかもしれない他の誰のために
こんにちは! console.log(data ['items'] [0])の出力は何ですか? – deChristo
@LuizEduardodeChristoこんにちは、私はコンソールログ出力のスクリーンショットで私のポストを更新しました。ありがとうございました – anthonyCam
YouTubeはいつも 'statistics'オブジェクトを返すとは限りません。あなたが言ったように、すばやくホバリングすると、あまりにも多くの同時Ajaxリクエストがあり、いくつかは終了してデータを返しません。 データを処理する前にデータが存在するかどうかチェックしますか? – Akurn