Foros del Web » Programando para Internet » Jquery »

Sistema de votacion con jquery

Estas en el tema de Sistema de votacion con jquery en el foro de Jquery en Foros del Web. Estoy haciendo un sistema de votación con jquery-ajax. Se trata del típico jquery que al hacer clic en un div (al votar), se envian datos ...
  #1 (permalink)  
Antiguo 08/11/2016, 07:39
 
Fecha de Ingreso: octubre-2010
Mensajes: 31
Antigüedad: 14 años, 1 mes
Puntos: 1
Pregunta Sistema de votacion con jquery

Estoy haciendo un sistema de votación con jquery-ajax. Se trata del típico jquery que al hacer clic en un div (al votar), se envian datos a un archivo intermedio que procesa los datos (en este caso up_vote.php), y posteriormente se actualiza el div con los nuevos datos. Funciona perfectamente, dando de resultado =2 (variable enviada mas uno).

En una segunda fase intento presentar el resultado de la votación en otro div (en otro sitio de la página). El problema es, que se refresca el div, pero resultado es incorrecto, mostrando 1 en lugar de 2 (parece como si la variable no hubiera sido enviada, o el div se refrescara antes de recibir el resultado).

Os dejo el código completo por si alguien lo quiere probar...

Index.html__________________
Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  2. <link type="text/css" rel="stylesheet" href="style.css" />
  3. <script type="text/javascript" src="myjquery.js"></script>
  4. </head>
  5.  
  6. <script type="text/javascript">
  7. $(function(){
  8.   $(".n_vote").click(function()
  9.     {
  10.     var id_field = $(this).attr("id");
  11.     var parent = $(this);
  12.      $.ajax({
  13.                  type: "POST",
  14.                  url: "up_vote.php",
  15.                  data: {id_field: id_field, name: name},
  16.                  cache: false,
  17.         success: function(html){
  18.             //mostrar los resultados en el mismo div
  19.             parent.html(html);
  20.             //y tambien mostrar los resultados en div #results
  21.             $("#results").load("up_vote.php");
  22.     }  
  23.              });
  24.     return false;
  25.     });
  26. });
  27.  
  28.  
  29. <div class="vote_system">
  30. <div class="n_vote" name="up" id="1">Pincha aqui para mostrar resultado</div>
  31. </div>
  32. <!--  muestra el resultado correcto=2 -->
  33. ______________________________
  34.  
  35. <br>
  36. Mostrar resultado en otro div:
  37. <br>
  38. <div class="results" id="results">
  39. </div>
  40. <!--  muestra incorrecto el resultado=1 -->
  41.  
  42. </body>
  43. </html>

up_vote.php__________________

Código PHP:
Ver original
  1. <?php
  2. $id_field=$_POST['id_field'];
  3. echo 'Resultado=';
  4. echo $id_field+1;
  5. ?>


Soy un poco torpe con jquery. ¿Alguien con más experiencia me puede explicar porqué el segundo div no muestra el resultado correcto?, ¿que sucede y cómo resolvelo?
  #2 (permalink)  
Antiguo 08/11/2016, 14:54
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 10 años
Puntos: 91
Respuesta: Sistema de votacion con jquery

lo que quieres es cargar el Resultado que se proceso con AJAX, no cargar el archivo directamente, por eso solo te muestra 1, necesitas cargar el Archivo Procesado con ajax

Código Javascript:
Ver original
  1. $(function(){
  2.   $(".n_vote").click(function()
  3.     {
  4.     var id_field = $(this).attr("id");
  5.     var parent = $(this);
  6.      $.ajax({
  7.                  type: "POST",
  8.                  url: "up_vote.php",
  9.                  data: {id_field: id_field, name: name},
  10.                  cache: false,
  11.         success: function(html){
  12.             //mostrar los resultados en el mismo div
  13.             parent.html(html);
  14.             //y tambien mostrar los resultados en div #results
  15.             $("#results").html(html);
  16.     }  
  17.              });
  18.     return false;
  19.     });
  20. });

Demo
http://main.xfiddle.com/9948020e/s.php

Etiquetas: actualizacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:59.