0

私のサイトには一連の Tumblr フィードがあり、それぞれが異なるタグから投稿を取得しています。

最初のフィード スクリプトは機能しますが、2 番目と 3 番目はエラーをスローします。

Uncaught TypeError: Cannot read property 'type' of undefined

各スクリプトは、タグの取得とそれが追加されるデータの要素に対してまったく同じ受け入れを行います。

私はこれを理解するのに苦労しています。私が間違ったことを誰か知っていますか?

$.ajax({
    url: "http://api.tumblr.com/v2/blog/myblog.tumblr.com/posts?api_key=mykey&tag=news",
    dataType: 'jsonp',
    success: function(results){

    var i = 0;

     while (i < 10) {

       var type = results.response.posts[i].type;
       var date = results.response.posts[i].date;
       var link = results.response.posts[i].post_url;

       if (type == "text") {
         var title = results.response.posts[i].title;
         var content = results.response.posts[i].body;
         $("#tumnews #newscara").append("<div class='tumpost'><a href='" + link + "'><h2>" + title + "</h2>" + content + "</a></div>");
       }
       else if (type == "photo") {
         var photourl = results.response.posts[i].photos[0].alt_sizes[0].url;
         $("#tumnews #newscara").append("<li><div class='tumpost'><a href='" + link + "'><img src='" + photourl + "' alt='" + title + "'/></a></div></li>");
       }

      i++;
     }//END WHILE


  $("#newscara").flexisel({
    visibleItems: 5,
    animationSpeed: 200,
    autoPlay: true,
    autoPlaySpeed: 3000,
    pauseOnHover: true,
    clone:false,
  });

    }//END RESULTS FUNCTION
});
4

1 に答える 1

3

取得していた他の 2 つのタグの投稿数が少なかったため、エラーが発生したことがわかりました。指定したため、while (i < 10)ループし続け、投稿数が 10 件未満の場合はエラーが表示されます。

while文を次のように置き換えて修正しました

while (i < results.response.posts.length)

そのため、実際に存在する投稿の量だけをループします。

于 2013-10-03T05:37:44.930 に答える