получение данных из функции и вывод их на другой странице

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)

получение данных из функции и вывод их на другой странице

Сообщение dr1emaver » 28 сен 2011, 15:53

Здравствуйте)Начал писать под iframe переходя с flash'a и появилось пару вопросов.
1) Есть функция getProfiles, я к ней дополнительно дописываю пару параметров sex,education,bdate., но никак не получается их вывести.
Скрипт такой:
  1. <script type="text/javascript" charset="cp1251" >
  2. window.onload = (function() {   // когда загрузится вся страница
  3.     VK.init(function() {    // инициализируем Vk API
  4.  
  5.     // узнаём flashVars, переданные приложению GET запросом. Сохраняем их в переменную flashVars
  6.     var parts=document.location.search.substr(1).split("&");
  7.     var flashVars={}, curr;
  8.     for (i=0; i<parts.length; i++) {
  9.         curr = parts[i].split('=');
  10.         // записываем в массив flashVars значения. Например: flashVars['viewer_id'] = 1;
  11.         flashVars[curr[0]] = curr[1];
  12.     }
  13.    
  14.     // получаем viewer_id из полученных переменных
  15.     var viewer_id = flashVars['viewer_id'];
  16.  
  17.     // выполняем запрос получения профиля
  18.     VK.api("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate"}, function(data) {
  19.         // обрабатываем полученные данные
  20.         // выводим имя и фамилию в блок user_info
  21.         document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name +  '<br />';
  22.         document.getElementById('user_info').innerHTML = data.response[0].bdate;// дата рождения
  23.                 document.getElementByld('user_info').innerHTML = data.response[0].sex + '<br/>';
  24.                 document.getElementByld('user_info').innerHTML = data.response[0].university_name + ' ' + data.response[0].faculty_name + '<br/>';
  25.  
  26.                        
  27. // создаем img, для отображения аватарки
  28.     //  var image=document.createElement('img');
  29.         // из полученных данных берем ссылку на фото
  30.     //  image.src=data.response[0].photo_big;
  31.         // добавляем img в блок user_info
  32.         user_info.appendChild(image);
  33.     });
  34.  
  35.     });
  36. });
  37. </script>

Смотрю в charlese все передает, но никак не получается вывести.

2) Вопрос. Прочитал тему про передачу параметров другой странице, но никак не получается это передать в html страницу, или можно только в php?
Что я делаю пишу в heade страницы из которой я хочу передать :
  1. <script type="text/javascript">
  2. window.onload = (function() {   // когда загрузится вся страница
  3. // функция получения параметров
  4. function getVkParams() {
  5.     VK.loadParams(document.location.href);
  6.     return 'api_url=' + VK.params.api_url +
  7.     '&api_id=' + VK.params.api_id +
  8.     '&api_settings=' + VK.params.api_settings +
  9.     '&viewer_id=' + VK.params.viewer_id +
  10.     '&viewer_type=' + VK.params.viewer_type +
  11.     '&sid=' + VK.params.sid +
  12.     '&secret=' + VK.params.secret +
  13.     '&user_id=' + VK.params.user_id +
  14.     '&group_id=' + VK.params.group_id +
  15.     '&is_app_user=' + VK.params.is_app_user +
  16.     '&auth_key=' + VK.params.auth_key +
  17.     '&language=' + VK.params.language +
  18.     '&parent_language=' + VK.params.parent_language +
  19.     '&lc_name=' + VK.params.lc_name;
  20. }
  21.  
  22.     VK.init(function() {    // инициализируем Vk API
  23.         // переадресовываем на страницу vk2.php с передачей параметров
  24.         document.location.href="http://сайт.ру/index.html?"+getVkParams();
  25.     });
  26. });
  27. </script>

и далее уже в вызове по кнопке :
  1. <a href="http://сайт.ру/index.html?"+getVkParams();">
  2.                        <img src="img/btn_profile" name="myImage4" border=0 />
  3.                    </a>
  4.  
  5.  

но не передает.

3 вопросик: можно ли как нибудь сделать в scripte getProfiles вместо : document.getElementById('user_info').innerHTML = data.response[0].first_name + сделать first_name_temp = first_name , а потом вывести в текстовое поле first_name_temp?

Ребят,перенесите тему пожалуйста, случайно не туда написал...
dr1emaver

 
Автор темы
Сообщения: 78
Зарегистрирован: 16 июл 2011, 20:08
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: получение данных из функции и вывод их на другой странице

Сообщение Александр » 28 сен 2011, 21:26

Если это новая тема с вопросами, то что она делают в разделе готовых уроков?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение dr1emaver » 29 сен 2011, 16:38

случайно не в тот раздел написал) Поможете ?)
dr1emaver

 
Автор темы
Сообщения: 78
Зарегистрирован: 16 июл 2011, 20:08
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение dr1emaver » 30 сен 2011, 18:18

никак не получается передать в скрипт параметры полученные функцией getProfiles
  1.  
  2. <script type="text/javascript" charset="cp1251" >
  3. window.onload = (function() {   // когда загрузится вся страница
  4.     VK.init(function() {    // инициализируем Vk API
  5.  
  6.     // узнаём flashVars, переданные приложению GET запросом. Сохраняем их в переменную flashVars
  7.     var parts=document.location.search.substr(1).split("&");
  8.     var flashVars={}, curr;
  9.     for (i=0; i<parts.length; i++) {
  10.         curr = parts[i].split('=');
  11.         // записываем в массив flashVars значения. Например: flashVars['viewer_id'] = 1;
  12.         flashVars[curr[0]] = curr[1];
  13.     }
  14.    
  15.     // получаем viewer_id из полученных переменных
  16.     var viewer_id = flashVars['viewer_id'];
  17.  
  18.    
  19.  
  20.     // выполняем запрос получения профиля
  21.     VK.api("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate"}, function(data) {
  22.         // обрабатываем полученные данные
  23.         // выводим имя и фамилию в блок user_info
  24.     document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name +   data.response[0].bdate +'<br />';
  25.           document.getElementById('user_info').innerHTML = data.response[0].bdate ;// дата рождения
  26.                 document.getElementByld('user_info').innerHTML = data.response[0].sex + '<br/>';
  27.                 document.getElementByld('user_info').innerHTML = data.response[0 ].university_name + ' ' + data.response[0].faculty_name + '<br/>';
  28.                    
  29.                      // создаем img, для отображения аватарки
  30.     //  var image=document.createElement('img');
  31.         // из полученных данных берем ссылку на фото
  32.     //  image.src=data.response[0].photo_big;
  33.         // добавляем img в блок user_info
  34.         user_info.appendChild(image);
  35.     });
  36.  
  37.     });
  38. });
  39. </script>
  40. <script type="text/javascript" charset="cp1251" >
  41. $(document).ready(function(){ // когда страница загрузится
  42.     VK.init(function() {
  43.         // получаем flashVars
  44.         var parts=document.location.search.substr(1).split("&");
  45.             var flashVars={}, curr;
  46.             for (i=0; i<parts.length; i++) {
  47.                 curr = parts[i].split('=');
  48.                 flashVars[curr[0]] = curr[1];
  49.             }
  50.    
  51.         // вытаскиваем viewer_id и auth_key из полученных переменных
  52.         var viewer_id = flashVars['viewer_id'];
  53.     var auth_key = flashVars['auth_key'];
  54.  
  55.     // отправляем post запрос, передаём viewer_id и auth_key
  56.     $.post('http://site.ru/profile.php',  // заменяем на адерс своего скрипта
  57.             { "viewer_id": viewer_id, "auth_key": auth_key,"sex":sex,"nameuser":first_name},   // передаваемые значения
  58.             function(data){         // функция после выполнения передачи данных
  59.                 $('#result').html(data);
  60.             });
  61.     });
  62.  
  63. });
  64. </script>
  65.  

Чарлез при такой записи ничего не показывает, но если убрать ,"sex":sex,"nameuser":first_name , то передача скрипту пойдет будет передавать viewer_id": viewer_id, "auth_key": auth_key
Помогите пожалуйста с проблемой
dr1emaver

 
Автор темы
Сообщения: 78
Зарегистрирован: 16 июл 2011, 20:08
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение Александр » 30 сен 2011, 19:27

C яваскриптом то как вообще? Если не хватает знаний в яваскрипте, то поизучай его сначала, а потом уже связывайся с api.

Что выведет?
  1. document.getElementById('user_info').innerHTML = '1';
  2. document.getElementById('user_info').innerHTML = '2';
  3. document.getElementById('user_info').innerHTML = '3';

Вот и смотри что у тебя бы вывело в твоём коде...

всё закомментил, а эту строчку оставил. Как так?


Здесь экранировал кавычки?
  1. <a href="http://сайт.ру/index.html?"+getVkParams();">



А в последнем твоем коде, что вообще такое? Зачем по 2 раза одно и то же делать? Зачем говнокодишь?
Продумай алгоритм. Сделай его в виде блок схемы, потом берись за реализацию.

О том как передать параметры другой странице - есть урок. А как совместить это с нелепо написанным кодом, это уж сам...
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение dr1emaver » 01 окт 2011, 17:50

Здесь экранировал кавычки?

Номера строк Вкл/Выкл | Показать/Скрыть | Выделить всё
<a href="http://сайт.ру/index.html?"+getVkParams();">

Исправил, но все равно не передаются на другую страницу..
Вот такой код страницы index.html
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4.  
  5. <head>
  6.     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7.    
  8.    
  9.     <link href="css/pattern.css" rel="stylesheet" type="text/css"/>
  10.    
  11.    
  12.  
  13.  
  14. <!-- подключаем xd_connection.js -->
  15.  <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
  16. <script src="http://сайт.ру/jquery-1.4.2.min.js" type="text/javascript"></script>
  17.  
  18. <script type="text/javascript">
  19. window.onload = (function() {   // когда загрузится вся страница
  20. // функция получения параметров
  21. function getVkParams() {
  22.     VK.loadParams(document.location.href);
  23.     return 'api_url=' + VK.params.api_url +
  24.     '&api_id=' + VK.params.api_id +
  25.     '&api_settings=' + VK.params.api_settings +
  26.     '&viewer_id=' + VK.params.viewer_id +
  27.     '&viewer_type=' + VK.params.viewer_type +
  28.     '&sid=' + VK.params.sid +
  29.     '&secret=' + VK.params.secret +
  30.     '&user_id=' + VK.params.user_id +
  31.     '&group_id=' + VK.params.group_id +
  32.     '&is_app_user=' + VK.params.is_app_user +
  33.     '&auth_key=' + VK.params.auth_key +
  34.     '&language=' + VK.params.language +
  35.     '&parent_language=' + VK.params.parent_language +
  36.     '&lc_name=' + VK.params.lc_name;
  37. }
  38.  
  39.     VK.init(function() {    // инициализируем Vk API
  40.         // переадресовываем на страницу vk2.php с передачей параметров
  41.         document.location.href="http://сайт.ру/profiles.html?"+getVkParams();
  42.     });
  43. });
  44. </script>
  45.  
  46.  
  47.  
  48.  
  49. <script type="text/javascript" charset="cp1251" >
  50. window.onload = (function() {   // когда загрузится вся страница
  51.     VK.init(function() {    // инициализируем Vk API
  52.  
  53.     // узнаём flashVars, переданные приложению GET запросом. Сохраняем их в переменную flashVars
  54.     var parts=document.location.search.substr(1).split("&");
  55.     var flashVars={}, curr;
  56.     for (i=0; i<parts.length; i++) {
  57.         curr = parts[i].split('=');
  58.         // записываем в массив flashVars значения. Например: flashVars['viewer_id'] = 1;
  59.         flashVars[curr[0]] = curr[1];
  60.     }
  61.    
  62.     // получаем viewer_id из полученных переменных
  63.     var viewer_id = flashVars['viewer_id'];
  64.  var auth_key = flashVars['auth_key'];
  65.  
  66.     // отправляем post запрос, передаём viewer_id и auth_key
  67.     
  68.  VK.api('friends.getAppUsers', {}, function(dataAppUsers) {
  69.  var frCount = dataAppUsers.response.length;
  70.                 for (var i=0; i<frCount; i++) {
  71.            var friends =  dataAppUsers.response[i].uid + dataAppUsers.response[i].first_name + ' ' + dataAppUsers.response[i].last_name ;
  72.                  }
  73.      $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта
  74.             { "viewer_id": viewer_id, "auth_key": auth_key,"friend":friends},   // передаваемые значения
  75.             function(data){         // функция после выполнения передачи данных
  76.                 $('#result').html(data);
  77.             });
  78.      });
  79.      
  80.      
  81.     // выполняем запрос получения профиля
  82.     VK.api("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate"}, function(data) {
  83.         // обрабатываем полученные данные
  84.         // выводим имя и фамилию в блок user_info
  85.         document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name +'<br />';
  86.                    
  87.        $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта
  88.             { "viewer_id": viewer_id, "auth_key": auth_key,"nameuser":data.response[0].first_name+' ' + data.response[0].last_name,"sex":data.response[0].sex,"bdate":data.response[0].bdate,"education":data.response[0].university_name + ' ' + data.response[0].faculty_name},   // передаваемые значения
  89.             function(data){         // функция после выполнения передачи данных
  90.                 $('#result').html(data);
  91.             });
  92.     });
  93.    
  94.         });
  95. });
  96. </script>
  97.  
  98.  
  99. </head>
  100.  
  101. <body >
  102.  
  103.  
  104.     <div id="app">
  105.                         <div id="buttons">
  106.                                    <a href="http://сайт.ру/profiles.html?"+getVkParams();>
  107.                                             <img src="img/btn_profile_alpha_50.png" name="myImage4" border=0 />
  108.                     </a>
  109.                 </div>
  110.                
  111.  
  112. <table>
  113.     <tr>
  114.         <td>
  115.             <div id="user_info"></div>
  116.         </td>
  117.     </tr>
  118.    </table>
  119.                 </div>
  120.             </div>
  121.     </div>
  122.  
  123.  
  124.  
  125. </body>
  126. </html>
  127.  

Чарлез показывает, что идет обращение к вконтакте.апи находит все параметры, которые в getVKparams,но при нажатии на кнопку и переходе на страницу profiles.html ( на которой вызывается функция getProfiles)Чарлез выдает :
"error":{"error_code":113,"error_msg":"Invalid user id","request_params":[{"key":"api_id","value":"3225767"},{"key":"fields","value":"photo_big"},{"key":"format","value":"json"},{"key":"method","value":"getProfiles"},{"key":"rnd.....}

Получается, что параметры не передаются..

Второй вопрос.В этом коде у меня в двух местах вызывается profile.php в функции getProfiles, и getAppUsers. Для того, чтобы вызывать один раз надо сделать переменную friends глобальной ? и записывать ее при запросе из getProfiles, или просто функцию getAppUsers вызывать внутри getProfiles?

И еще вопросик:
Чтобы вывести город я писал так :
  1.  
  2. VK.api('places.getCityById',{ cids: data.response[0].city},function(data){
  3.         city_temp = data.response[0].name;
  4.     });
  5.  

Но это не работает,подскажите пожалуйста.
dr1emaver

 
Автор темы
Сообщения: 78
Зарегистрирован: 16 июл 2011, 20:08
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение Александр » 02 окт 2011, 19:12

Зачем у тебя два раза VK.init ?

Если смотреть на
  1. document.location.href="http://сайт.ру/profiles.html?"+getVkParams();

то код что ниже вообще не нужен.

Я не вижу логики в строке
  1. <a href="http://сайт.ру/profiles.html?"+getVkParams();>

Это как так в теге "a" появляется +getVkParams(); ? Есть такой способ?

dr1emaver писал(а):Получается, что параметры не передаются..

Так передаются или нет? Факт того передаются они или нет можно увидеть в Charles. А вот если твоё следующее обращение к api вернуло ошибку, это не значит что они не передались.

dr1emaver писал(а): Для того, чтобы вызывать один раз надо сделать переменную friends глобальной ? и записывать ее при запросе из getProfiles, или просто функцию getAppUsers вызывать внутри getProfiles?

Алгоритм продумал? Надо использовать эти данные ещё где-то? На основе этого и решай.

dr1emaver писал(а):Но это не работает,подскажите пожалуйста.

Смотри что передаётся серверу api, сравнивай с документацией, смотри какой ответ получаешь.


Ты сам понимаешь что делаешь? Или уже думаешь куда бы что копирнуть, вдруг заработает?
Я вот не понимаю, понаписал ты много, всё запутано, зачем где что используется не понятно. Понятно только что не работает.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение dr1emaver » 03 окт 2011, 17:26

Город в чарлезе показывает, но не могу понять почему переменная city_temp не передается в profile.php..

  1.  
  2. VK.api("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate,city,country"}, function(data) {
  3.         // обрабатываем полученные данные
  4.         // выводим имя и фамилию в блок user_info
  5.         var city_temp;
  6.  
  7.     VK.api('places.getCityById',{ cids: data.response[0].city},function(data){
  8.         city_temp = data.response[0].name;
  9.        
  10.         /*    $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта
  11.             { "viewer_id": viewer_id, "auth_key": auth_key,"city":city_temp},   // передаваемые значения
  12.             function(data){         // функция после выполнения передачи данных
  13.                 $('#result').html(data); */
  14.             });
  15.        
  16.         });
  17.              
  18.                
  19.              
  20.        $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта
  21.             { "viewer_id": viewer_id, "auth_key": auth_key,"nameuser":data.response[0].first_name+' ' + data.response[0].last_name,"sex":data.response[0].sex,"bdate":data.response[0].bdate,"education":data.response[0].university_name + ' ' + data.response[0].faculty_name,"city":city_temp},   // передаваемые значения
  22.             function(data){         // функция после выполнения передачи данных
  23.                 $('#result').html(data);
  24.             });
  25.     });
  26.     });
  27.  

если раскомментить запрос к скрипту в places.getCityById, то передаваться будет, но профиль.пхп будет вызываться 2 раза. А мне нужно , чтобы с остальными переменными передавался..
dr1emaver

 
Автор темы
Сообщения: 78
Зарегистрирован: 16 июл 2011, 20:08
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение Александр » 03 окт 2011, 19:43

dr1emaver
Почему ты сделал VK.api('places.getCityById' внутри VK.api("getProfiles", а $.post( - отдельно? Уверен что данные будут записаны в переменную до того как ты отправишь post? Почаще выводи данные, хотя бы алертом... Смотри где будут расхождения с твоим планом выполнения, в какой очередности, какие переменные теряются...
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: получение данных из функции и вывод их на другой странице

Сообщение dr1emaver » 03 окт 2011, 20:50

Александр писал(а):dr1emaver
Почему ты сделал VK.api('places.getCityById' внутри VK.api("getProfiles", а $.post( - отдельно? Уверен что данные будут записаны в переменную до того как ты отправишь post? Почаще выводи данные, хотя бы алертом... Смотри где будут расхождения с твоим планом выполнения, в какой очередности, какие переменные теряются...

Ну для VK.api('places.getCityById' нужно получить data.response[0].city из VK.api("getProfiles", которое будет являться цифрой.Далее я полученное значение передаю в VK.api('places.getCityById' , которое мне выдаст название города.
а $.post( - отдельно?

Почему отдельно? Он же тоже в getProfiles находится...
dr1emaver

 
Автор темы
Сообщения: 78
Зарегистрирован: 16 июл 2011, 20:08
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

След.

Вернуться в Создание IFrame-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0