- Делаем обычную кнопку:
<form method="post" action="/path/to/like/somePost123456"> <input type="submit" value="Like" /> </form>
- На сервере, при обработке запроса, возвращаем статус «204 No Content»:
// handleLikes handles POST requests at /path/to/like/:postID. func handleLikes(w http.ResponseWriter, r *http.Request) { // Do something meaningful with the request here... // Return the HTTP status number 204. w.WriteHeader(http.StatusNoContent) }
- Декорируем кнопку из пункта 1 с помощью CSS, чтобы после нажатия она становилась неактивной.
- Профит. Страница после нажатия не перезагружается, лайки работают, как если бы был JS.
Вопрос: можно ли ещё с помощью каких-нибудь (помимо JS) ухищрений прозвести частичную перерисовку страницы? В данном случае это необходимо, например, чтобы показать количество лайков или отобразить, что запрос до сервера таки дошёл. Какая-нибудь фича SVG, XML? Ничего там не предусмотрено для этого? Почему iframes не популярен для данных целей, учитывая, что в HTTP/2 количество запросов к серверу не принципиально?