2016-11-08 3 views
0

Je fais un système de vote avec jQuery AJAX. Lorsque vous cliquez sur un div (lors du vote), les données sont envoyées à un fichier intermédiaire (dans ce cas, up_vote.php), puis le div est mis à jour avec les nouvelles données. Cela fonctionne parfaitement, donnant result = 2 (variable plus un). Dans un deuxième temps, j'essaie de présenter le résultat du vote dans un autre div (#results dans un autre site de la page). Le problème est, il rafraîchit la div, mais le résultat est incorrect, montrant 1 au lieu de 2 (ressemble à la variable n'a pas été envoyé, ou le div actualisé avant de recevoir le résultat).Système de vote avec jQuery AJAX

Je laisse le code complet au cas où quelqu'un veut essayer ...

Index.html

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link type="text/css" rel="stylesheet" href="style.css" /> 
<script type="text/javascript" src="myjquery.js"></script> 
</head> 
<body> 
    <script type="text/javascript"> 
     $(function(){ 
      $(".n_vote").click(function() { 
       var id_field = $(this).attr("id"); 
       var parent = $(this); 

       $.ajax({ 
        type: "POST", 
        url: "up_vote.php", 
        data: { 
         id_field: id_field, 
         name: name 
        }, 
        cache: false, 
        success: function(html) { 
         //Show the results in the same div 
         parent.html(html); 
         //Show the results in another div, #results 
         $("#results").load("up_vote.php"); 
        } 
       }); 
       return false; 
      }); 
     }); 
    </script> 

    <div class="vote_system"> 
     <div class="n_vote" name="up" id="1">Clic here to show the result</div> 
    </div> 
    <!-- Correct result=2 --> 
    ______________________________ 

    <br> 
    Show the result in a another div: 
    <br> 
    <div class="results" id="results"> 
    </div> 
    <!-- Incorrect result=1 --> 
</body> 
</html> 

up_vote.php

<?php 
    $id_field = $_POST['id_field']; 
    echo 'Result='; 
    echo $id_field + 1; 
?> 

Quelqu'un peut-il avec plus d'expérience me expliquer pourquoi la deuxième div ne montre pas le bon résultat? Que se passe-t-il et comment le résoudre?

Répondre

2

Au lieu d'utiliser $("#results").load("up_vote.php"); qui charge up_vote.php (passant obviousely id_field de $ ne pas définie et vide, parce que vous chargez l'URL via get et aucun paramètre) donc il est normal que vous avez obtenu 1 au lieu de 2.
vous avez pour utiliser le même succès html retourné du serveur pour le montrer dans la deuxième div, comme $("#results").html(html);