Страница 1 из 3

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

Добавлено: 28 сен 2011, 15:53
dr1emaver
Здравствуйте)Начал писать под iframe переходя с flash'a и появилось пару вопросов.
1) Есть функция getProfiles, я к ней дополнительно дописываю пару параметров sex,education,bdate., но никак не получается их вывести.
Скрипт такой:

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

<script type="text/javascript" charset="cp1251" >window.onload = (function() {   // когда загрузится вся страница    VK.init(function() {    // инициализируем Vk API     // узнаём 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("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate"}, function(data) {         // обрабатываем полученные данные        // выводим имя и фамилию в блок user_info        document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name +  '<br />';        document.getElementById('user_info').innerHTML = data.response[0].bdate;// дата рождения                document.getElementByld('user_info').innerHTML = data.response[0].sex + '<br/>';                document.getElementByld('user_info').innerHTML = data.response[0].university_name + ' ' + data.response[0].faculty_name + '<br/>';                         // создаем img, для отображения аватарки    //  var image=document.createElement('img');        // из полученных данных берем ссылку на фото    //  image.src=data.response[0].photo_big;        // добавляем img в блок user_info        user_info.appendChild(image);    });     });});</script>
Смотрю в charlese все передает, но никак не получается вывести.

2) Вопрос. Прочитал тему про передачу параметров другой странице, но никак не получается это передать в html страницу, или можно только в php?
Что я делаю пишу в heade страницы из которой я хочу передать :

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

<script type="text/javascript">window.onload = (function() {   // когда загрузится вся страница// функция получения параметровfunction getVkParams() {    VK.loadParams(document.location.href);    return 'api_url=' + VK.params.api_url +    '&api_id=' + VK.params.api_id +    '&api_settings=' + VK.params.api_settings +    '&viewer_id=' + VK.params.viewer_id +    '&viewer_type=' + VK.params.viewer_type +    '&sid=' + VK.params.sid +    '&secret=' + VK.params.secret +    '&user_id=' + VK.params.user_id +    '&group_id=' + VK.params.group_id +    '&is_app_user=' + VK.params.is_app_user +    '&auth_key=' + VK.params.auth_key +    '&language=' + VK.params.language +    '&parent_language=' + VK.params.parent_language +    '&lc_name=' + VK.params.lc_name;}     VK.init(function() {    // инициализируем Vk API        // переадресовываем на страницу vk2.php с передачей параметров        document.location.href="http://сайт.ру/index.html?"+getVkParams();    });});</script>
и далее уже в вызове по кнопке :

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

 <a href="http://сайт.ру/index.html?"+getVkParams();">                        <img src="img/btn_profile" name="myImage4" border=0 />                    </a>  
но не передает.

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

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

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

Добавлено: 28 сен 2011, 21:26
Александр
Если это новая тема с вопросами, то что она делают в разделе готовых уроков?

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

Добавлено: 29 сен 2011, 16:38
dr1emaver
случайно не в тот раздел написал) Поможете ?)

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

Добавлено: 30 сен 2011, 18:18
dr1emaver
никак не получается передать в скрипт параметры полученные функцией getProfiles

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

 <script type="text/javascript" charset="cp1251" >window.onload = (function() {   // когда загрузится вся страница    VK.init(function() {    // инициализируем Vk API     // узнаём 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("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate"}, function(data) {         // обрабатываем полученные данные        // выводим имя и фамилию в блок user_info    document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name +   data.response[0].bdate +'<br />';          document.getElementById('user_info').innerHTML = data.response[0].bdate ;// дата рождения                document.getElementByld('user_info').innerHTML = data.response[0].sex + '<br/>';                document.getElementByld('user_info').innerHTML = data.response[0 ].university_name + ' ' + data.response[0].faculty_name + '<br/>';                                         // создаем img, для отображения аватарки    //  var image=document.createElement('img');        // из полученных данных берем ссылку на фото    //  image.src=data.response[0].photo_big;        // добавляем img в блок user_info        user_info.appendChild(image);    });     });});</script><script type="text/javascript" charset="cp1251" >$(document).ready(function(){ // когда страница загрузится    VK.init(function() {        // получаем flashVars        var parts=document.location.search.substr(1).split("&");            var flashVars={}, curr;            for (i=0; i<parts.length; i++) {                curr = parts[i].split('=');                flashVars[curr[0]] = curr[1];            }            // вытаскиваем viewer_id и auth_key из полученных переменных        var viewer_id = flashVars['viewer_id'];    var auth_key = flashVars['auth_key'];     // отправляем post запрос, передаём viewer_id и auth_key    $.post('http://site.ru/profile.php',  // заменяем на адерс своего скрипта            { "viewer_id": viewer_id, "auth_key": auth_key,"sex":sex,"nameuser":first_name},   // передаваемые значения            function(data){         // функция после выполнения передачи данных                $('#result').html(data);            });    }); });</script> 
Чарлез при такой записи ничего не показывает, но если убрать ,"sex":sex,"nameuser":first_name , то передача скрипту пойдет будет передавать viewer_id": viewer_id, "auth_key": auth_key
Помогите пожалуйста с проблемой

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

Добавлено: 30 сен 2011, 19:27
Александр
C яваскриптом то как вообще? Если не хватает знаний в яваскрипте, то поизучай его сначала, а потом уже связывайся с api.

Что выведет?

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

document.getElementById('user_info').innerHTML = '1';document.getElementById('user_info').innerHTML = '2';document.getElementById('user_info').innerHTML = '3';
Вот и смотри что у тебя бы вывело в твоём коде...

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

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

user_info.appendChild(image);
Здесь экранировал кавычки?

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

<a href="http://сайт.ру/index.html?"+getVkParams();">

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

О том как передать параметры другой странице - есть урок. А как совместить это с нелепо написанным кодом, это уж сам...

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

Добавлено: 01 окт 2011, 17:50
dr1emaver
Здесь экранировал кавычки?

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

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

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>    <meta http-equiv="content-type" content="text/html; charset=utf-8" />            <link href="css/pattern.css" rel="stylesheet" type="text/css"/>          <!-- подключаем xd_connection.js --> <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script> <script src="http://сайт.ру/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript">window.onload = (function() {   // когда загрузится вся страница// функция получения параметровfunction getVkParams() {    VK.loadParams(document.location.href);    return 'api_url=' + VK.params.api_url +    '&api_id=' + VK.params.api_id +    '&api_settings=' + VK.params.api_settings +    '&viewer_id=' + VK.params.viewer_id +    '&viewer_type=' + VK.params.viewer_type +    '&sid=' + VK.params.sid +    '&secret=' + VK.params.secret +    '&user_id=' + VK.params.user_id +    '&group_id=' + VK.params.group_id +    '&is_app_user=' + VK.params.is_app_user +    '&auth_key=' + VK.params.auth_key +    '&language=' + VK.params.language +    '&parent_language=' + VK.params.parent_language +    '&lc_name=' + VK.params.lc_name;}     VK.init(function() {    // инициализируем Vk API        // переадресовываем на страницу vk2.php с передачей параметров        document.location.href="http://сайт.ру/profiles.html?"+getVkParams();    });});</script>    <script type="text/javascript" charset="cp1251" >window.onload = (function() {   // когда загрузится вся страница    VK.init(function() {    // инициализируем Vk API     // узнаём 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']; var auth_key = flashVars['auth_key'];     // отправляем post запрос, передаём viewer_id и auth_key     VK.api('friends.getAppUsers', {}, function(dataAppUsers) { var frCount = dataAppUsers.response.length;                for (var i=0; i<frCount; i++) {           var friends =  dataAppUsers.response[i].uid + dataAppUsers.response[i].first_name + ' ' + dataAppUsers.response[i].last_name ;                 }     $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта            { "viewer_id": viewer_id, "auth_key": auth_key,"friend":friends},   // передаваемые значения            function(data){         // функция после выполнения передачи данных                $('#result').html(data);            });     });              // выполняем запрос получения профиля    VK.api("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate"}, function(data) {         // обрабатываем полученные данные        // выводим имя и фамилию в блок user_info        document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name +'<br />';                           $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта            { "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},   // передаваемые значения            function(data){         // функция после выполнения передачи данных                $('#result').html(data);            });    });           });});</script>  </head> <body >      <div id="app">                        <div id="buttons">                                   <a href="http://сайт.ру/profiles.html?"+getVkParams();>                                            <img src="img/btn_profile_alpha_50.png" name="myImage4" border=0 />                    </a>                </div>                 <table>    <tr>        <td>            <div id="user_info"></div>        </td>    </tr>   </table>                </div>            </div>    </div>   </body></html> 
Чарлез показывает, что идет обращение к вконтакте.апи находит все параметры, которые в 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?

И еще вопросик:
Чтобы вывести город я писал так :

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

 VK.api('places.getCityById',{ cids: data.response[0].city},function(data){        city_temp = data.response[0].name;    }); 
Но это не работает,подскажите пожалуйста.

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

Добавлено: 02 окт 2011, 19:12
Александр
Зачем у тебя два раза VK.init ?

Если смотреть на

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

document.location.href="http://сайт.ру/profiles.html?"+getVkParams();
то код что ниже вообще не нужен.

Я не вижу логики в строке

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

<a href="http://сайт.ру/profiles.html?"+getVkParams();>
Это как так в теге "a" появляется +getVkParams(); ? Есть такой способ?
dr1emaver писал(а):Получается, что параметры не передаются..
Так передаются или нет? Факт того передаются они или нет можно увидеть в Charles. А вот если твоё следующее обращение к api вернуло ошибку, это не значит что они не передались.
dr1emaver писал(а): Для того, чтобы вызывать один раз надо сделать переменную friends глобальной ? и записывать ее при запросе из getProfiles, или просто функцию getAppUsers вызывать внутри getProfiles?
Алгоритм продумал? Надо использовать эти данные ещё где-то? На основе этого и решай.
dr1emaver писал(а):Но это не работает,подскажите пожалуйста.
Смотри что передаётся серверу api, сравнивай с документацией, смотри какой ответ получаешь.


Ты сам понимаешь что делаешь? Или уже думаешь куда бы что копирнуть, вдруг заработает?
Я вот не понимаю, понаписал ты много, всё запутано, зачем где что используется не понятно. Понятно только что не работает.

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

Добавлено: 03 окт 2011, 17:26
dr1emaver
Город в чарлезе показывает, но не могу понять почему переменная city_temp не передается в profile.php..

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

 VK.api("getProfiles", {uids:viewer_id,fields:"photo_big,education,sex,bdate,city,country"}, function(data) {         // обрабатываем полученные данные        // выводим имя и фамилию в блок user_info        var city_temp;     VK.api('places.getCityById',{ cids: data.response[0].city},function(data){        city_temp = data.response[0].name;                /*    $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта            { "viewer_id": viewer_id, "auth_key": auth_key,"city":city_temp},   // передаваемые значения            function(data){         // функция после выполнения передачи данных                $('#result').html(data); */            });                });                                                  $.post('http://сайт.ру/profile.php',  // заменяем на адерс своего скрипта            { "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},   // передаваемые значения            function(data){         // функция после выполнения передачи данных                $('#result').html(data);            });    });    }); 
если раскомментить запрос к скрипту в places.getCityById, то передаваться будет, но профиль.пхп будет вызываться 2 раза. А мне нужно , чтобы с остальными переменными передавался..

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

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

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

Добавлено: 03 окт 2011, 20:50
dr1emaver
Александр писал(а):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 находится...