如何使用ajax/jquery/php制作像stackoverflow这样的投票系统(高效)

Gan*_*row 8 javascript ajax performance jquery

我正在尝试做一些类似于堆栈溢出投票和投票的投票后投票,现在我让它工作(但它正在工作的方法)然而有些事情感觉不对,希望有人会建议一些有用的调整.这是我的jquery代码:

 var x = $("strong.votes_balance").text();
   $("input.vote_down").click(function(){
     $.ajax({   
       type: "POST",  
       url: "http://localhost/questions/vote_down/4",   
       success: function()   
       {   
       $("strong.votes_balance").html((parseInt(x) - parseInt(1)));
       $("input[type=button]").hide();
       $(".thumbsup_hide").show();
       }   
      });  
    });


   $("input.vote_up").click(function(){
     $.ajax({   
       type: "POST",  
       url: "http://localhost/questions/vote_up/4",   
       success: function()   
       {   
       $("input[type=button]").hide();
       $("strong.votes_balance").html((parseInt(x) + parseInt(1)));
       $(".thumbsup_hide").show();
       }   
       });
    });


    });
Run Code Online (Sandbox Code Playgroud)

这是我的HTML:

<div class="thumbsup thumbsup_template_up-down" id="thumbsup_49">


 <form method="post" id="voting_form">

<input type="hidden" value="49" name="thumbsup_id"/>
  <span class="thumbsup_hide">Result:</span>
  <strong class="votes_balance"><?=$row_q->post_vote?></strong>

  <input type="button" title="Good Comment!" value="+1" name="thumbsup_rating" class="vote_up"/>
  <input type="button" title="Bad Comment!" value="-1" name="thumbsup_rating" class="vote_down"/>
 </form>

</div>
Run Code Online (Sandbox Code Playgroud)

$ row_q-> post_vote等于某个数字.现在,当我单击"投票"按钮时,它会增加强值,如果我单击"投票",它会减少它.

我正在使用CI(codeigniter)而不是本机php.

我如何衡量这一性能,不久前投票或投票失败花了两秒多的时间来执行,我在我的查询中添加了LIMIT 1,现在它运行得更快,我认为这应该会更快.谢谢您的意见

而且对不起,我在这里省略了这个是我的投票和投票功能:

$this->db->query("UPDATE $table SET $what_field = ($what_field + 1) $wheremore WHERE $what_id = '$value' LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

和以下投票:

$this->db->query("UPDATE $table SET $what_field = ($what_field - 1) $wheremore WHERE $what_id = '$value' LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

更新我觉得事情一般都很慢的原因是因为我对jquery的不熟练,我认为我的桌子很好

更新II

我刚刚从jquery ajax函数中删除了php部分,只是将数字增加1并且它仍然工作得很慢.

更新III

当我用phpmyadmin运行查询时,它运行范围从0.3秒到1.77秒,因某种原因而变化.

Bal*_*usC 6

WHERE $what_id = '$value'
Run Code Online (Sandbox Code Playgroud)

您不应该使用strings/varchars作为标识符.这很不自然.使用数字/整数.

WHERE $what_id = $value
Run Code Online (Sandbox Code Playgroud)

是的,这会影响数据库性能,尤其是当行数很高时.


Wim*_*Wim 1

您的数据库表$table应该有一个索引$what_id。通常它是主键,但由于添加LIMIT 1改变了任何东西,这可能不是这种情况?