Передача данных между функциями.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Padme
Сообщения: 4
Зарегистрирован: 15 янв 2013, 17:55

Передача данных между функциями.

Сообщение Padme »

Здравствуйте.
Я хочу центрировать карту гугл по городу, где проживает пользователь, запустившый приложение. Карту я создала. Даже центрировала её для проверки. Город я нашла, даже вывела его в <div>, но вот передать название в функцию центрирующую карту я не могу. Видимо я чего-то не знаю о глобальных переменных. Долго искала решение в интернете. Помогите, пожалуйста решить проблему. Приложение тут: http://vk.com/app3603753_19131538?ref=9

Код: Выделить всё

 <!DOCTYPE html><html>   <head>    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />    <link rel="stylesheet" type="text/css" href="style.css"/>    <script src="http://vk.com/js/api/xd_connection.js?2" type="text/javascript"></script>        <script type="text/javascript"      src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBduORj87wd3MpVBKJDFFGSWJgimiqta1Q&sensor=false">    </script>         </head>    <body onload="initialize()">    <script type="text/javascript">        VK.init(function() {                    // узнаём flashVars, переданные приложению GET запросом. Сохраняем их в переменную flashVars                    var parts=document.location.search.substr(1).split("&");                    var flashVars={}, curr;                    for (i=0; i<parts.length; i++) {                        curr = parts[i].split('=');                        // записываем в массив flashVars значения. Например: flashVars['viewer_id'] = 1;                        flashVars[curr[0]] = curr[1];                    }                              // получаем viewer_id из полученных переменных                var viewer_id = flashVars['viewer_id'];                VK.api("users.get", {uids:viewer_id,fields:"city, country"}, function(data) {                       var city = data.response[0].city;                    VK.api("places.getCityById", {cids:city}, function(data) {                        city_name = data.response[0].name;                        document.getElementById('FON').innerHTML = city_name;                    });                });                 })        function initialize() {            var geocoder = new google.maps.Geocoder();            var mapOptions = {              center: new google.maps.LatLng(55.7522, 37.6156),              zoom: 8,              mapTypeId: google.maps.MapTypeId.ROADMAP            };            var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);            function showCity(address)            {                geocoder.geocode({'address':address}, function(results, status)                {                    if( status == google.maps.GeocoderStatus.OK ) {                        map.setCenter(results[0].geometry.location);                    }                });            }            showCity(city_name);        }  </script>      <div id="map_canvas"></div>    <div id="FON"></div>   </body>  </html> 
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

Re: Передача данных между функциями.

Сообщение alexei »

Код: Выделить всё

 var global_var=0;function F1(){global_var=5;}function F2(){alert(global_var); //5} function F1();function F2(); 
Padme
Сообщения: 4
Зарегистрирован: 15 янв 2013, 17:55

Re: Передача данных между функциями.

Сообщение Padme »

Спасибо. Вроде сработало.
Padme
Сообщения: 4
Зарегистрирован: 15 янв 2013, 17:55

Re: Передача данных между функциями.

Сообщение Padme »

Нет, не сработало. Он выдает 0, число присвоенное вначале. Значение присваемое в places.getCityById вытащить нельзя за пределы! Почему так?
Получается у меня вопрос такой, как мне данные возвращаемые функцией VK.api перетащить в глобальную переменную?

Код: Выделить всё

VK.api("places.getCityById", {cids:city}, function(data) {                        city_name = data.response[0].name;                        document.getElementById('FON').innerHTML = city_name;                    });
Padme
Сообщения: 4
Зарегистрирован: 15 янв 2013, 17:55

Re: Передача данных между функциями.

Сообщение Padme »

Все исправила. Работает. Еще раз спасибо.
Ответить