Страница 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:
Подскажите, как можно получить его значение?
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 очень просто:
А теперь вопрос: попытался сделать прогресс загрузки. Т.е. когда окно открывается, в скрытом 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}); });