Как правильно прописать полученные значения от метода ВК?

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

Как правильно прописать полученные значения от метода ВК?

Сообщение Dimaz »

Всем привет. Помогите разобраться. Мне нужно передать два значения параметра fields в отдельную функцию select_h_friend. Значения 'photo_medium' и 'uid'. Значение photo_medium я прописываю в цикле в атрибут value каждого создаваемого элемента option. Потом в функции select_h_friend достаю полученный url-адрес из выбранного элемента option.
Но вот куда прописать полученные значения uid? Можно конечно прописать их тоже в value вместе с url-ями, но потом придется их как-то разделять друг от друга. Так как я использую этот url, записанный в value элемента option, чтобы вставить его в элемент <img>. А если в value кроме url еще будет храниться uid пользователя, следовательно перед тем как его вставлять в тег <img>, сначала нужно будет отделить url от uid. Да, знаю, их их можно разделить с помощью метода JS, split(). Но может есть какое-нибудь более рациональное решение? :?:

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

 function select_h_friend() {var img = $('#h_friend').val();if(img == '#') {$('#no').html('<img src="http://vk.com/images/dquestion_d.gif"></img>');}else {$('#no').html('<img src="' + img + '"</img>');$('form p').css("display","block");}} $(document).ready(function(){            VK.init(function() {    // инициализируем Vk API     VK.api('friends.get',{'fields':'photo_medium, uid, first_name, last_name'},function(data) {          if (data.response) {                    var profilesCount = data.response.length;            var friends_help_box = '';             if(profilesCount) {                            friends_help_box = '<form><select name="uid" id="h_friend"><option value="#" disabled selected>Выберите друга</option>';                                for (var i=0; i<profilesCount; i++) {                                        friends_help_box += '<option value="' + data.response[i].photo_medium + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';                                }                                friends_help_box += '</select>';                 friends_help_box += '<span style="padding-left: 5px;"><button onclick="select_h_friend(); return false;">Выбрать</button></span></form>';                 $('#yes').html(friends_help_box);                    }            else {                $('#yes').html('');            }                }            }); });}); 
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Casperovskii »

Dimaz
А ввести дополнительный массив с такими же индексами ввести почему нельзя?
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Dimaz »

Casperovskii писал(а):Dimaz
А ввести дополнительный массив с такими же индексами ввести почему нельзя?
Имеете ввиду глобальный массив? Т.е. в VK.init в цикле в него записать значения, а потом в функции select_h_friend() в начале прописать его, data = Data. Я так понимаю?
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Casperovskii »

Dimaz
Я с JS'ом не очень, но, видимо, да. Глобальный массив переменных просто. У которых номер будет совпадать с номером соответствующего "option". Только присваивать не в Init, а в функции data, которая выполняется после ответа контакта.
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Dimaz »

Casperovskii писал(а):Dimaz
Я с JS'ом не очень, но, видимо, да. Глобальный массив переменных просто. У которых номер будет совпадать с номером соответствующего "option". Только присваивать не в Init, а в функции data, которая выполняется после ответа контакта.
Не совсем понял. Не могли бы написать? Если в функции с data прописать, как тогда заполнить массив полученными значениями без цикла?
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Casperovskii »

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

for (var i=0; i<profilesCount; i++) {                                       friends_help_box += '<option value="' + data.response[i].photo_medium + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';               //добавил строку:arrayOfUid[i] = data.response[i].uid;                }
Ну как-то так. Где объявлять не знаю =) Не изучал я JS.
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Dimaz »

Casperovskii писал(а):

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

for (var i=0; i<profilesCount; i++) {                                       friends_help_box += '<option value="' + data.response[i].photo_medium + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';               //добавил строку:arrayOfUid[i] = data.response[i].uid;                }
Ну как-то так. Где объявлять не знаю =) Не изучал я JS.
Именно так я и сделал. Т.е. потом нужно будет получить значение выбранного option-а и достать по этому номеру элемент с соответствующим индексом из массива. Я правильно понял?
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Dimaz »

Кстати еще вопросик. А не легче будет сделать как я написал в начале темы, т.е. записать uid в атрибут value option-а вместе с url. А потом просто разделить их методом split()? Чем массив создавать? Или наоборот тогда, url прописывать не в тег на странице, а тоже в глобальный массив. Хмм... Какое решение более верное в плане производительности.
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Casperovskii »

Dimaz
Про производительность - жди Саныча. Мне легче все в массивах хранить - и uid, и url, и прочее.
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Как правильно прописать полученные значения от метода ВК?

Сообщение Dimaz »

Еще один вопросик появился. Если я буду хранить в одном массиве как url так и uid, как их разделять? В таком случае нужен ассоциативный массив, а сейчас он просто числовой. Т.е. нужно, чтобы было ключ - значение. Как сделать не подскажете? В JS думаю делается аналогично, как и во flash?
Ответить