Хорошо, вот краткое объяснение того, что я делаю: у меня есть веб-сайт, на котором люди могут голосовать ВВЕРХ или ВНИЗ «чемпиону». Эти чемпионы начинаются со 100 здоровья. Если бы вы участвовали в голосовании против чемпионов, их здоровье теперь будет 101. DOWN голосования будет 99.
Этот сайт работает и работает уже 5 сезонов (в нем участвуют более 1200 участников). Так что сейчас идет много голосования. Сейчас все работает отлично. НО, для этого следующего сезона я буду внедрять jquery / ajax для голосования в режиме реального времени (так что страница не должна обновляться каждый раз, когда вы проголосуете).
Борьба, с которой я столкнулась сейчас, – это, во-первых, я не очень хорош с ajax / js. Однако основная проблема заключается в том, когда кто-то нажимает на голосование, мне нужен способ захватить данные LIVE из БД, а затем выбросить их в запрос jquery / ajax, а затем вывести реальные данные в режиме реального времени (или, по крайней мере, я чувствуйте, что это то, что нужно делать).
Есть и вторая часть этого … людям разрешено голосовать 3 раза в час. В верхней части страницы есть уведомление, в котором показано, сколько голосов у них осталось: «У вас осталось 3 действия». Это снова работает нормально, как есть, но, я думаю, нужно было бы установить с помощью ajax в реальном времени.
Надеюсь, я объяснил это достаточно хорошо. Если нет, сообщите мне! Любая помощь будет принята с благодарностью!
КОД:
$("a.vote-heal").click(function(){ var votes; var champ; var health; champ = $(this).attr('id'); votes = $("#votesLeft").text(); votes--; //the main ajax request $.getJSON("/load-champ.php?champ="+champ, function(data) { $.each(data, function(i,data) { health = data.health; health++; }); $.ajax({ type: "POST", url: "/votes.php", data: "champ="+champ+"&action=heal", success: function(msg) { $('#'+champ+' .health-inner').html(health); $('#header .vote-remain').html('You have <strong><span id="votesLeft">'+votes+'</span> Actions</strong> remaining'); $('#'+champ+' .voting').html('<a id='+champ+'" class="button vote-hurt" href="javascript:;">Hurt '+champ+'</a><div class="button vote-heal action-tooltip">Heal '+champ+'</div>'); } }); }); });
Все это просто запросы к базе данных, которые возвращаются с помощью JSON. Возможно, есть два действия на бэкэнд – голосуйте и обновляйте.
В методе голосования сначала проверьте, есть ли текущий счет избирателя. Если голосов осталось, сделайте счет чемпионов вверх или вниз.
Затем верните этот массив:
В методе обновления (который будет опросить серверный сервер каждые х секунд или минут), количество возвращаемых голосов будет возвращено.
Довольно простая реализация ajax.
Надеюсь это поможет!
EDIT: ссылки обучения AJAX
С jQuery, это супер, супер легко. Вот как: