实时jQuery Ajax PHP中的UP或DOWN投票

Alright, here's a quick explanation of what I am doing: I have a website where people can vote UP or DOWN to a "champion." These champions start with 100 health. If you were to UP vote a specific champion, their health would now be 101. DOWN voting it would be 99.

This site is up and running and has been for 5 seasons now (there's over 1200 members that play). So there's a lot of voting going on at once. It all works fine now. BUT, for this next season, I will be implementing jquery/ajax for "real-time" voting (so the page doesn't need to refresh every time you vote).

The struggle I am having right now with this is, first off, I am not great with ajax/js. However, the main issue is when someone clicks a vote, I need a way to grab the LIVE data from the DB and then throw that into the jquery/ajax query and then output the real data, in real-time (or at least I feel this is what should be done).

There is also a second part to this...people are allowed to vote 3x per hour. There is a notification at the top of the page showing them how many votes they have left, "You have 3 actions remaining." This is again, working fine as is, but I imagine would need to be fixed in with the ajax to be real-time as well.

I hope I explained this well enough. If not, please let me know! Any help would be greatly appreciated!

CODE:

$("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>');
            }
        });
    });
});
douzen1880
douzen1880 实际上第5季刚刚结束,所以没有投票权。我现在唯一能做的就是把你送到测试网站,这需要在私人消息中哈哈。任何想要它的人都让我知道!
接近 9 年之前 回复
douzhongju8780
douzhongju8780 实际上你可以链接到网站-只需粘贴网址即可。
接近 9 年之前 回复
dsnm64969
dsnm64969 不知道我需要接受吗?实际上甚至没有看到接受%直到你刚才提到它哈哈。现在,@ceejayoz-如果你想我可以通过消息链接你的实况网站,这样你就可以看到它是什么和已经完成(不知道我是否可以在这里实际链接网站)。
接近 9 年之前 回复
duandange7480
duandange7480 6个问题,0接受?继续前进。
接近 9 年之前 回复
donglangtun1850
donglangtun1850 到目前为止你做了什么?这些都不是非常复杂。
接近 9 年之前 回复

1个回答



所有这些只是使用JSON返回的数据库查询。 也许在后端有两个动作 - 投票和刷新。</ p>

在投票方法中,首先检查投票人的当前计数。 如果还有投票,请让冠军得分上升或下降。</ p>

然后,返回此数组:</ p>


  1. 列出项目 </ li>
  2. 冠军投票</ li>
  3. 左投票</ li>
  4. 错误(如果存在)</ li>
    </ ol>

    在刷新方法中(每隔x秒或几分钟轮询后端服务器)返回当前投票数。</ p>

    ajax的一个相当简单的实现。</ p >

    希望这会有所帮助!</ p>


    编辑:AJAX学习链接</ strong> </ p>

    使用jQuery,它非常简单。 方法如下:</ p>

展开原文

原文

All of this is just database queries that are returned with JSON. Maybe have two actions on the backend - vote and refresh.

In the vote method, first check to see the voter's current count. If there are votes left, have the champion's score go up or down.

Then, return this array:

  1. List item
  2. Champions votes
  3. Votes left
  4. Error (if exists)

In the refresh method (which would poll the backend server every x number of seconds or minutes) return the number of current votes.

A fairly easy implementation of ajax.

Hope this helps!


EDIT: AJAX learning links

With jQuery, it is super, super easy. Here's how:

dongpochi9741
dongpochi9741 真棒。 乐于帮助!
接近 9 年之前 回复
douao1858
douao1858 我想通了,我只需要将AJAX TYPE与我在php文件中抓取参数的方式相匹配:)再次感谢!
接近 9 年之前 回复
dragon456101
dragon456101 现在,当您点击投票时,它会拉入实时统计数据,然后显示新的更新统计数据。 但是,我正在努力让ajax发布到服务器上。 我知道这不是PHP,因为该文件之前工作正常。 我将在我的答案中添加我的jquery以帮助查看错误。
接近 9 年之前 回复
douduan5086
douduan5086 我相信是这样。 当然,我现在被击败所以每当我能够得到这个工作哈哈时我都会回复这个。 感谢目前为止所有的帮助!
接近 9 年之前 回复
doulai8405
doulai8405 您可以发送多个查询。 例如,在$ .getJSON函数中,有一个完整的匿名函数,您可以在初始调用成功时传入。 然后,您可以调用刷新统计信息功能。 或者将刷新统计信息函数包含在具有某些逻辑的计时器中,以确保不会触发多个调用。 这有帮助吗?
接近 9 年之前 回复
dongyizhui0616
dongyizhui0616 我想我已经把json想了一下。 我确实有一个简单的问题...如果说,你单击向上或向下然后数据刷新获取实时数据(我猜是让JSON指向具有此功能的特定自定义页面然后返回) 把数据交给votes.php)。 一旦完成,它会继续并增加你的投票吗? 有没有办法让php不运行,直到jquery / json / ajax成功?
接近 9 年之前 回复
donglun1020
donglun1020 我会。 我只是想看看是否还有其他人想先加入:P
接近 9 年之前 回复
doufencigui933699
啊啊啊小孔 好! 如果这回答了您的问题,请记得检查作为答案和upvote。
接近 9 年之前 回复
dongyang0005
dongyang0005 太棒了,我有机会的时候会经历这些链接! 希望我能快速轻松地学习它,哈哈。
接近 9 年之前 回复
dongpao1905
dongpao1905 谢谢,我取消了对它的引用(我不想让你难堪)。 我用一些链接更新了帖子。
接近 9 年之前 回复
duanlan7239
duanlan7239 感谢您的答复! 我之前从未使用过JSON(甚至不确定它的用途是什么)。 你有什么地方推荐我去快速复习一下吗? PS:感谢大胆的声明,我去接受了一些答案:)
接近 9 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐