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

Вывод списка друзей пользователя

Добавлено: 16 фев 2011, 17:02
BaCo
Написал скрипт для вывода списка друзей в select.

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

      addBox = new MessageBox({title: 'Отправка цитаты на стену другу'});      addBox.addButton({label: "Закрыть", style: 'button_no', onClick: addBox.hide});      addBox.addButton({label: "Отправить", onClick:function() { setStatus(text, $('#friendList').val()); addBox.hide; }});      addBox.content('<form><div id="friendListContainer">Выберите друга, которому хотите отправить цитату:<br /><br /><select id="friendList"></select></div></form>');      {prefix}.api('friends.get', {fields: 'uid'}, function(data) {        for(var i = 0; i < data.response.length; i++) {          if(data.response[i].online) {            $('#friendList').prepend($('<option value="' + data.response[i].uid + '">' + data.response[i].first_name + " " + data.response[i].last_name + ' [в сети]</option>'));          } else {            $('#friendList').append($('<option value="' + data.response[i].uid + '">' + data.response[i].first_name + " " + data.response[i].last_name + '</option>'));          }        }      });      addBox.show();
Есть 2 вопроса:
1) Код можно вызвать только один раз, не перезагружая страницу (если больше одного, то список просто не заполняется). Подозреваю, что проблема кроется в friends.get. Подскажите как исправить?
2) Можно ли вместо обычного select использовать dropdown из VK GUI? Если да, можете подсказать?
VK GUI: http://vkj.net.ru/gui.php

Re: Вывод списка друзей пользователя

Добавлено: 17 фев 2011, 15:36
BaCo
Может все-таки есть варианты?

Re: Вывод списка друзей пользователя

Добавлено: 18 фев 2011, 00:37
Александр
BaCo писал(а):Код можно вызвать только один раз, не перезагружая страницу (если больше одного, то список просто не заполняется). Подозреваю, что проблема кроется в friends.get. Подскажите как исправить?
Запрос к серверу api уходит? Ответ возвращает? Посмотри с помощью Charles.

Re: Вывод списка друзей пользователя

Добавлено: 20 фев 2011, 12:37
BaCo
Подсказали решение. Может кому пригодится:

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

      addBox = new MessageBox({title: 'Отправка цитаты на стену другу'});      addBox.addButton({label: "Закрыть", style: 'button_no', onClick: addBox.hide});      addBox.addButton({label: "Отправить", onClick:function() {setStatus(text, $('#friendList').val()); addBox.hide; }});      addBox.content('<center><div id="friendListContainer">Выберите друга, которому хотите отправить цитату:<br /><br /><input id="friendList"></div></center>');      addBox.show();      VK.api('friends.get', {fields: 'uid'}, function(data) {        var html = '[';        var s = data.response.length;        for(var i = 0; i < s; i++){          html += '['+data.response[i].uid+', "'+data.response[i].first_name+' '+data.response[i].last_name+(data.response[i].online?' [в сети]':'')+'"],';        }        html += ']';        new Dropdown(ge('friendList'),eval(html),{width: 200});      });

Re: Вывод списка друзей пользователя

Добавлено: 24 фев 2011, 15:15
BaCo
Неудача... Скрипт размещенный выше не работает... Не получает значение Dropdown:

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

$('#friendList').val()
Подскажите, как можно получить его значение?

Re: Вывод списка друзей пользователя

Добавлено: 24 фев 2011, 16:15
BaCo
Порылся тут http://vkontakte.ru/js/lib/ui_controls.js. Думаю, что надо использовать функцию val_full. Только не знаю как...

Re: Вывод списка друзей пользователя

Добавлено: 06 мар 2011, 08:21
BaCo
Полностью рабочий скрипт:

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

function sendToFriend(text) {      addBox = new MessageBox({title: 'Отправка цитаты на стену другу'});      addBox.addButton({label: "Закрыть", style: 'button_no', onClick: addBox.hide});      addBox.addButton({label: "Отправить", onClick:function() {setStatus(text, FriendList.val()); addBox.hide; }});      addBox.content('<center><div id="friendListContainer" style="display:none;">Выберите друга, которому хотите отправить цитату:<br /><br /><input id="friendList"></div><img id="progress" style="display:block;" src="http://vkontakte.ru/images/upload.gif" /></center>');      addBox.show();      VK.api('friends.get', {fields: 'uid'}, function(data) {        var html = '[';        var s = data.response.length;        for(var i = 0; i < s; i++){          html += '[' + data.response[i].uid + ', "' + data.response[i].first_name + ' ' + data.response[i].last_name + '", ' + (data.response[i].online?'"Сейчас в сети!"':'')+'],';        }        html += ']';        FriendList = new Dropdown(ge('friendList'),eval(html),{width: 250});      });      $(ge('friendListContainer')).css('display', 'block');      $(ge('progress')).css('display', 'none');    }
Получить значение Dropdown очень просто:

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

FriendList.val()
А теперь вопрос: попытался сделать прогресс загрузки. Т.е. когда окно открывается, в скрытом div загружаются списки юзеров, а в другом div стоит картинка, отображающая прогресс. Когда списки загружены, div с юзерами показывается, а с картинкой скрывается. Проблема в том, что при первом открытии окно все работает нормально, списки заполняются и тд, а при втором, третьем и тд - отображается только картинка, хотя я знаю (проверял) список всех юзеров получен и возможно получать значения из него. В чем дело? :?: :?: :?:

Re: Вывод списка друзей пользователя

Добавлено: 09 мар 2011, 19:07
BaCo
Правка в предыдущий пост!

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

      addBox = new MessageBox({title: 'Отправка цитаты на стену другу'});      addBox.addButton({label: "Закрыть", style: 'button_no', onClick: addBox.hide});      addBox.addButton({label: "Отправить", onClick:function() {alert(FriendList.val()); addBox.hide; }});      addBox.content('<center><div id="friendListContainer">Выберите друга:<br /><br /><input id="friendList"></div></center>');      addBox.show();      VK.api('friends.get', {fields: 'uid'}, function(data) {        var html = '[';        var s = data.response.length;        for(var i = 0; i < s; i++){          html += '[' + data.response[i].uid + ', "' + data.response[i].first_name + ' ' + data.response[i].last_name + '", ' + (data.response[i].online?'"Сейчас в сети!"':'')+'],';        }        html += ']';        FriendList = new Dropdown(ge('friendList'),eval(html),{width: 250});      });