@StanleyShilow

Как подтянуть фото методом wall.get?

Друзья, я снова вышел на тропинку войны и продолжая свое изучение JS наткнулся на неспособность подгрузить, а вернее, как мне кажется, углубиться во вложенность json и вытянуть оттуда фото. Интернет полон разнообразных объяснений, но как бы я не использовал предлагаемые решения, выходит либо пустота, либо ошибка, либо NaN.

Текст подтягивается адекватно, дата тоже, а вот фото и лайки, например, нет. Создается впечатление, что мне нужно указать полностью детальный путь до объекта, однако закончились идеи того, как это сделать.

function getUrl(method, params) {
    if (!method) throw new Error ('отсутствует метод!');
    params = params || {};
    params['access_token'] = '********************************';
    return 'https://api.vk.com/method/' + method + '?&v=4.1&' + $.param(params);
}

$.ajax({
   url: getUrl ('wall.get', {owner_id: -********, count: 100, offset: 2, filter: 'owner', fields:'text, src_big, date'}),
    method: 'GET',
    dataType:'JSONP',
    success: function(data) {
    drawNews(data.response);
    console.log(data);
  }
});

function drawNews(news){
  var html = ('');
  for(var i = 1; i < news.length; i++){
      var n = news[i];
      n.date = new Date(n.date * 1000);
      html += '<div><div style="width:300px; height:auto;"><p>'+ n.text +'</p><p>'+ n.date.toString() +'</p></div><img src="'+ n.src_big + '"></div>';
  }
  $('#news').html(html);
}


Всем хорошего дня. Буду благодарен за разъяснение ситуации, что не так я сделал...
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Посмотрите внимательно возвращаемый wall.get() JSON: фотографии там лежат в массиве attachments.

Т.е. надо ещё одним циклом в каждом посте перебирать эти attachments, и если type == 'photo', рисовать картинку.
function drawNews(news){
  var html = ('');
  for(var i = 1; i < news.length; i++){
      var n = news[i];
      n.date = new Date(n.date * 1000);

      var images = [], tmpl = '<img src="%SRC%" alt="">';
      if( n.attachments) {
        for( var j=0; j<n.attachments.length; j++) {
          if(n.attachments[j].type !== 'photo') continue;
          images.push(
            tmpl.replace('%SRC%', n.attachments[j].photo.photo_130)
          );
        }
      }

      html += '<div><div style="width:300px; height:auto;"><p>'+ n.text +'</p><p>'+ n.date.toString() +'</p></div>' + images.join('') + '</div>';
  }
  $('#news').html(html);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы