location.reload()与我的数据库有所不同

时间:2017-02-11 12:28:18

标签: php jquery html ajax

我实现了费率系统的代码,但是当我选择投票时,没有任何改变,当我重新选择投票时,它没问题!但是当我在phpmyadmin上看到我的数据库时,投票的计数器比投票的计数器有1个clic,而且我已经回复了#34;在我的页面上......为什么这个差异1?

my note.js

$(function(){
    $('.star').on('mouseover', function(){
        var indice = $('.star').index(this);
        $('.star').removeClass('full');
        for(var i = 0; i<= indice; i++){
            $('.star:eq('+i+')').addClass('full');  
        }
    }); 

    $('.star').on('mouseout', function(){
        $('.star').removeClass('full');
        });

    var average = $('.average').attr('data-average');
    function avaliacao(average){
        average = (Number(average)*20);
        $('.barra .bg').css('width', 0);
        $('.barra .bg').animate({width: average+'%'}, 500);
    }
    avaliacao(average);


    $('.star').on('click', function(){
        var artigoId = $('.artigoDados').attr('data-id');
        var ponto = $(this).attr('id');
        location.reload();
        $.post('sys/votar.php',{votar: 'sim', artigo: artigoId, ponto: ponto}, function(retorno){
        avaliacao(retorno.average);
        $('p.votos span').html(retorno.votos);

        }, 'jSON');

    });

});

我的HTML代码:

<?php 

$bdd = new PDO('mysql:host=localhost;dbname=notation', 'root', 'root');

?>

<html lang="pt-BR">
<head>
<meta charset="utf-8" />
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/note.js"></script>
</head>


<body>

<?php
    $artigoId = (int)$_GET['artigo'];

    $artigos = $bdd->prepare('SELECT * FROM sys_note WHERE id_recette = ?');
    $artigos->execute(array($artigoId));
    while($row = $artigos->fetchObject()){
    echo '<h1>'.$row->titre_recette.'</h1>';
    $calculo = ($row->pontos == 0) ? 0 : round(($row->pontos/$row->votos), 1);
    echo '<span class="average" data-average="'.$calculo.'"></span>';
    echo '<span class="artigoDados" data-id="'.$row->id_recette.'"></span>';




?>

<div class="barra">
    <span class="bg"></span>
    <div class="estrelas">
    <?php for($i=1; $i<=5; $i++): ?>
    <span class ="star" id="<?php echo $i;?>">
    <span class="starAbsolute"></span>
    </span>
    <?php endfor;?>
    </div>
</div>
<p class="votos"><span><?php echo $row->votos;?></span>votes</p>
<?php }?>

</body>
</html>

votar.php

<?php 

$bdd = new PDO('mysql:host=localhost;dbname=notation', 'root', 'root');

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $artigo = (int)$_POST['artigo'];    
    $pontos = $_POST['ponto'];

    $pegaArtigo = $bdd->prepare('SELECT * FROM sys_note WHERE id_recette = ?');
    $pegaArtigo->execute(array($artigo));

    while($row = $pegaArtigo->fetchObject()){
        $votosUpd = $row->votos+1;
        $pontosUpd = $row->pontos+$pontos;
        $average = round(($pontosUpd/$votosUpd), 1);
        $update = $bdd->prepare('UPDATE sys_note SET votos = ?, pontos = ? WHERE id_recette = ?');
        if($update->execute(array($votosUpd, $pontosUpd, $artigo))){
        die(json_encode(array('average' => $average, 'votos' => $votosUpd)));   

        }

    }

}

?>

1 个答案:

答案 0 :(得分:0)

你需要做location.reload();在你发帖后,而不是之前。

onPostExecute

因为你正在重新加载页面,所以没有必要在回调中做额外的工作。 虽然,我建议你通过ajax更改页面上的元素而不是原始的location.reload();