Нужна помощь по ВК АПИ
Друзья, в общем, я новичок, сильно не матюкайтесь))
Пишу скрипт для управления подписчиками сообщества и запнулся на этапе удаления подписчиков из группы. Суть в том, что нужно удалять конкретного юзера по нажатию кнопки, но почему-то удаляется рандомный юзер... Что делаю не так? Код: <!DOCTYPE html> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> Кол-во подписчиков: <input type="text" id="load100" value="20" size="10px"> <p>Сдвиг: <input type="text" id="offset" value="0" size="10px"></p> <button id="loadAll">Загрузить подписчиков</button> <p><button id="loadBan">Выбрать заблокированных</button></p> <!-- <p id="schet">'Показаны подписчики с' +OffMin+ 'по' +OffMax+;</p> --> <ul></ul> <script src="jquery.min.js"></script> <script src="vk.js"></script> <script> $('#loadAll').on('click', loadFriends); $('#loadBan').on('click', loadBanFriends); var PerLoad100 = document.getElementById('load100'); var OffSet = document.getElementById('offset'); // var OffMin = +OffSet.value +1; // var OffMax = PerLoad100.value // var Schet = document.getElementById('schet'); // schet.innerHTML+= "'Показаны подписчики с' +OffMin+ 'по' +OffMax+;" // function RemoveUser() { // sendRequest('groups.removeUser', { group_id: 129549953, user_id: g.id}, function (data) { // drawBanFriends(data); // console.log(data); // }); // } // Вывод удаленных/забанненых function drawBanFriends(items){ var html = ''; for (var i = 0; i < items.length; i++) { g = items[i]; var online = g.online ? '<span style="color:green">Online</span>' : '<span style="color:#ff0000">Offline</span>'; var deactivate = g.deactivated ? g.deactivated : ''; if (deactivate == 'deleted') { deactivate = html += '<li>' +'<a target = "_blank" href="http://vk.com/id'+ g.id +'">' +'<img src = "'+g.photo_100+'"/>' +'<div>' +'<h4>'+ g.first_name +' '+ g.last_name +'</h4>' +'<p>'+online+'</p>' +'<p>Пользователь удалил страницу</p>' +'<button> Написать </button>' + '</div>' +'</a>' +'</li>'; } else if (deactivate == 'banned') { deactivate = html += '<li>' +'<a target = "_blank" href="http://vk.com/id'+ g.id +'">' +'<img src = "'+g.photo_100+'"/>' +'<div>' +'<h4>'+ g.first_name +' '+ g.last_name +'</h4>' +'<p>'+online+'</p>' +'<p>Пользователь заблокирован</p>' + '</div>' +'</a>' +'<button id="del1"> Удалить2 </button>' +'</li>'; } else { deactivate = ''; } } $('ul').html(html); $('#del1').on('click', removeUser); } // Вывод списка подписчиков на страницу function drawFriends(items){ var html = ''; for (var i = 0; i < items.length; i++) { var g = items[i]; var online = g.online ? '<span style="color:green">Online</span>' : '<span style="color:#ff0000">Offline</span>'; var deactivate = g.deactivated ? g.deactivated : ''; if (deactivate == 'deleted') { deactivate = 'Страница удалена пользователем'; } else if (deactivate == 'banned'){ deactivate = 'Страница заблокирована'; } else { deactivate = ''; } html += '<li>'+ '<a target = "_blank" href="http://vk.com/id'+ g.id +'">' +'<img src = "'+g.photo_100+'"/>' +'<div>' +'<h4>'+ g.first_name +' '+ g.last_name +'</h4>' +'<p>'+online+'</p>' +'<p>'+deactivate+'</p>' +'<button> Написать </button>' + '</div>' +'</a>' +'</li>'; } $('ul').html(html); } </script> </body> </html> Функции: // Генерация URL запроса function getUrl(method,params) { if (!method) throw new Error ('Вы не указали метод!'); params = params || {}; params['access_token'] = 'тут токен'; return 'https://api.vk.com/method/'+ method +'?' + $.param(params) + '&v=5.52'; } // отправка запроса function sendRequest(method,params, func){ $.ajax({ url: getUrl(method, params), method: 'GET', dataType: 'JSONP', success: func }); } // Вывод всех юзеров function loadFriends() { sendRequest('groups.getMembers', {group_id: 148888375, count: PerLoad100.value, offset: OffSet.value, fields: 'photo_100,online,deactivated'}, function (data) { drawFriends(data.response.items, data.response.count); console.log(data); }); } // Вывод забаненых function loadBanFriends() { sendRequest('groups.getMembers', { group_id: 148888375, count: PerLoad100.value, offset: OffSet.value, fields: 'photo_100,online,deactivated'}, function (data) { drawBanFriends(data.response.items); console.log(data); }); } // Удаление юзера function removeUser(items) { sendRequest('groups.removeUser', { group_id: 148888375, user_id: g.id}, function (data) { drawBanFriends(data.response); console.log(g.id); }); } Мне кажется, что проблема именно в removeUser(items), но не могу понять какая((( |
Desantnik3,
строка 102 (html) сработает только для первой кнопки, id это уникальный идентификатор. строка 49 (js) откуда данные user_id: g.id? |
Цитата:
по строке 49: переменная "g" вот отсюда: function drawBanFriends(items){ var html = ''; for (var i = 0; i < items.length; i++) { g = items[i]; а id получает уже непосредственно из АПИ, насколько я понимаю |
так, как я понял, функция удаляет только последний id из цикла... А как сделать, чтоб она могла удалять любой?
|
Desantnik3,
попробуйте так // Вывод удаленных/забанненых function drawBanFriends(items){ var html = ''; items.forEach(function(g) { var online = g.online ? '<span style="color:green">Online</span>' : '<span style="color:#ff0000">Offline</span>'; var deactivate = g.deactivated ? g.deactivated : ''; if (deactivate == 'deleted') { deactivate = html += '<li>' +'<a target = "_blank" href="http://vk.com/id'+ g.id +'">' +'<img src = "'+g.photo_100+'"/>' +'<div>' +'<h4>'+ g.first_name +' '+ g.last_name +'</h4>' +'<p>'+online+'</p>' +'<p>Пользователь удалил страницу</p>' +'<button> Написать </button>' + '</div>' +'</a>' +'</li>'; } else if (deactivate == 'banned') { deactivate = html += '<li>' +'<a target = "_blank" href="http://vk.com/id'+ g.id +'">' +'<img src = "'+g.photo_100+'"/>' +'<div>' +'<h4>'+ g.first_name +' '+ g.last_name +'</h4>' +'<p>'+online+'</p>' +'<p>Пользователь заблокирован</p>' + '</div>' +'</a>' +'<button class="del" data-id="'+g.id+'"> Удалить2 </button>' +'</li>'; } else { deactivate = ''; } }) $('ul').html(html); $('.del').on('click', function() { console.log(this.dataset.id); sendRequest('groups.removeUser', { group_id: 148888375, user_id: this.dataset.id}, function (data) { drawBanFriends(data.response); }); }); } |
Цитата:
at drawBanFriends (index.html:54) at Object.success (index.html:90) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at A (jquery.min.js:4) at HTMLScriptElement.c (jquery.min.js:4) at HTMLScriptElement.dispatch (jquery.min.js:3) |
Desantnik3,
а так? [...items].forEach |
Цитата:
index.html:54 Uncaught TypeError: number 1 is not iterable (cannot read property Symbol(Symbol.iterator)) |
Desantnik3,
замените строки +'<button id="del1"> Удалить2 </button>' на +'<button class="del" data-id="'+g.id+'"> Удалить2 </button>' и $('#del1').on('click', removeUser); на $('.del').on('click', function() { console.log(this.dataset.id); sendRequest('groups.removeUser', { group_id: 148888375, user_id: this.dataset.id}, function (data) { drawBanFriends(data.response); }); }); в изначальном коде |
Цитата:
|
Часовой пояс GMT +3, время: 01:26. |