В этом уроке показано:
- как получить и отсортировать список друзей
- как разместить список друзей в элементе select
- как отправить сообщение на стену друга
code.js
$(document).ready(function(){
var friends_data; // отсортированный список друзей
VK.init(function() {
// выполняем запрос получения списка друзей
VK.api("friends.get", {fields:"first_name,photo"}, function(data) {
// узнаем количество друзей
var fr = data.response.length;
// сортируем друзей по имени (функция sFirstName описана ниже)
friends_data = data.response.sort(sFirstName);
// в value элемента будем записывать номер пользователя в массиве friends_data
for(var i=0;i<fr;i++){
$('#friends_list').append('<option value="'+ i +'">'+ friends_data[i].first_name + ' ' + friends_data[i].last_name +'</option>');
}
$("#friends_list").change(function () {
// узнаем какой элемент выбран в select
selectVal = $('#friends_list option:selected').val();
if (selectVal!='') { // если выбран друг
// вытаскиваем из массива фотографию выбранного пользователя по номеру в массиве
$('#user_info').html('<img src="'+ friends_data[selectVal].photo +'"/>');
} else { // если выбрано "выберите друга"
// очищаем блок с аватаркой
$('#user_info').html('');
}
})
});
});
$('#send_btn').click(function() {
if ($('#friends_list option:selected').val()!='') { // если выбран пользователь
if ($('#message_tf').val()!='') { // если введено сообщение
uid_to = friends_data[$('#friends_list option:selected').val()].uid; // id выбранного пользователя
message_to = $('#message_tf').val();
// отправляем запись на стену
VK.api('wall.post',{owner_id:uid_to, message:message_to},function(data) {
if (data.response) { // если получен ответ
alert('Сообщение отправлено! ID сообщения: ' + data.response.post_id);
} else { // ошибка при отправке сообщения
alert('Ошибка! ' + data.error.error_code + ' ' + data.error.error_msg);
}
});
} else {
alert('Введите сообщение!');
}
} else {
alert('Выберите пользователя!');
}
return false;
});
});
// функции сортировки
function sFirstName(a,b) {
if (a.first_name > b.first_name)
return 1;
else if (a.first_name < b.first_name)
return -1;
else
return 0;
}
index.html
<html>
<head>
<script src="js/jquery-1.6.1.min.js" type="text/javascript"></script>
<script src="js/code.js" type="text/javascript"></script>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
</head>
<body>
<table>
<tr>
<td>
<select id="friends_list">
<option value="">Выберите друга</option>
</select>
</td>
<td rowspan="3">
<div id="user_info"></div>
</td>
</tr>
<tr>
<td>
Сообщение:<br />
<textarea id="message_tf">Текст сообщения</textarea>
</td>
</tr>
<tr>
<td>
<a href="#" id="send_btn">Отправить</a>
</td>
</tr>
</table>
</body>
</html>
style.css
body {
padding:0;
margin:0;
font-family: tahoma, verdana, arial, sans-serif, Lucida Sans;
font-size: 11px;
}
select,textarea {
padding:0;
margin:0;
}
table {
border-collapse:0;
padding:0;
margin:0;
}
table td {
vertical-align:top;
font-family: tahoma, verdana, arial, sans-serif, Lucida Sans;
font-size: 11px;
}
#message_tf {
width:100%;
height:50px;
resize:none;
}
Приложение должно быть включено и видно всем.
В настройках приложения должен быть разрешен доступ к друзьям.