Показать сообщение отдельно
  #1 (permalink)  
Старый 13.04.2016, 20:57
Интересующийся
Отправить личное сообщение для max_fruit Посмотреть профиль Найти все сообщения от max_fruit
 
Регистрация: 08.04.2016
Сообщений: 10

Проблема с областью видимости.
Всем привет! Пытаясь работать с VK open API, столкнулся вот с какой задачей:
Почему не получается отобразить startFrom в консоли?
var startFrom = ""; // Глобальная переменная
// делаю запрос к vk api
    function s1() {  VK.api("newsfeed.search", {"v":"5.50","q":"привет", "extended":"1", "count":"200", "fields":"photo_50"}, function(data) { 
// получаю response и извлекаю нужные данные
             
        startFrom = data.response.next_from; // next_from - номер следующей страницы, который используется для извлечения максимального количества постов
       // извлечение параметров профиля
        var profilesCount = data.response.profiles.length;
                            
                            var profilesStr = '';
                            
                            for (var i=0; i<profilesCount; i++) {
                                
                                profilesStr +='<img src=' + data.response.profiles[i].photo_50 + '>' + '<a href="https://vk.com/id' + data.response.profiles[i].id + '"' + '>' + data.response.profiles[i].first_name + ' ' + data.response.profiles[i].last_name + '</a>' +  '<br/>';
                                
                            
    document.getElementById('friends_list').innerHTML = profilesStr + startFrom; // вставляю данные в html
                            }

    });
                          
                  }
    
$.when(s1()).done(function () {console.log(startFrom);}); // пытаюсь сделать последовательный вызов, при котором следующая функция выполнится только после завершения предыдущей


В html startFrom вставляется без проблем, но вот в консоль я его значение вывести не могу (пишет Uncaught ReferenceError: starFrom is not defined). И еще один момент: если
console.log(starFrom); заменить, например, на alert("Hello world!");, то alert выполнится, но до того, как в html будут вставлены результаты запроса, а если alert(startFrom), то всплывает пустое окно. ЧЯДНТ?

Последний раз редактировалось max_fruit, 14.04.2016 в 08:20.
Ответить с цитированием