css
style.css
.forum-list { margin: 20px; }
.thread-title { font-size: 18px; }
js
forum-ajax.js
document.addEventListener('DOMContentLoaded', function() {
document.addEventListener('click', function(event) {
if (event.target.classList.contains('like-button')) {
var postId = event.target.getAttribute('data-post-id');
var xhr = new XMLHttpRequest();
xhr.open('POST', forumAjax.ajax_url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
if (response.success) {
document.querySelectorAll('.likes-count[data-post-id="' + postId + '"]').forEach(function(el) {
el.textContent = '(いいね: ' + response.data.likes + ')';
});
document.querySelectorAll('.like-button[data-post-id="' + postId + '"]').forEach(function(el) {
el.textContent = response.data.liked ? 'いいねを取り消す' : 'いいね';
});
} else {
alert('いいねに失敗しました: ' + response.data.message);
}
}
};
xhr.send('action=add_like&post_id=' + postId);
}
});
});
コメント