Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2010, 02:32
Avatar de aniMAYtions
aniMAYtions
 
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
ajax solo recarga cuando quiere

Bueno, quizás no es exactamente eso. Aunque la verdad es que en algún momento del desarroio de mi aplicación conseguí que, justo después de votar una noticia, se refrescase sólo ese div y me aparecieran los votos que había dado.

Actualmente hay que refrescar manualmente la página para que aparezca y, la verdad, estoy tan saturada ia que no se me ocurre la manera de retomar el tema.

Os explico como va el módulo a ver si me podeis echar un cable:

En primer lugar tengo el div con las estrellitas que, por medio de estilos, se iluminan con el evento :hover y se ponen amarillas conforme se va votando. Este es el código.
Código:
<div >
	<ul class='star-rating'>");
	$conexion = conectar();
	$consulta = "SELECT Count(*), Sum(nota) FROM noticia_voto WHERE id_noticia = ".$row_noticia['0']."";							
	$resultado = mysql_fetch_row(mysql_query($consulta, $conexion));
	mysql_close($conexion);
	if($resultado[0] != 0)
	{
		$media = $resultado[1]/ $resultado[0];
		$redondeo = round($media, 2);
		$ancho = $redondeo * 25;
	}
	else
		$ancho = 0;
	echo utf8_encode("<li id='estrellitas' class='current-rating' style='width:".$ancho."px'><span>-</span></li>
	<li><a href ='javascript:Votar(\"$ip\", ".$row_noticia['0'].", 1);' title='No me gusta nada (1 estrella sobre 5)' class='one-star'><span>1</span></a></li>
<li><a href='javascript:Votar(\"$ip\", ".$row_noticia['0'].", 2);' title='Me gusta poco (2 estrellas sobre 5)' class='two-stars'><span>2</span></a></li>
	<li><a href='javascript:Votar(\"$ip\", ".$row_noticia['0'].", 3);' title='Aceptable (3 estrellas sobre 5)' class='three-stars'><span>3</span></a></li>
	<li><a href='javascript:Votar(\"$ip\", ".$row_noticia['0'].", 4);' title='Está bien (4 estrellas sobre 5)' class='four-stars'><span>4</span></a></li>
	<li><a href='javascript:Votar(\"$ip\", ".$row_noticia['0'].", 5);' title='Me gusta mucho (5 estrellas sobre 5)' class='five-stars'><span>5</span></a></li>
	</ul>
	</div>
	<div id='txt_voto' style='color: red; text-align:center; width:200px; visibility:hidden'></div>
Este módulo accede primero a votacion_ajax.js, que a su vez iama a votacion_ajax.php para hacer la inserción en la bd. Pero creo que solo va a hacer falta que os muestre su parte correspondiente del .js

Código:
function Votar(cod_usuario, cod_noticia, nota){

	document.getElementById("txt_voto").style.visibility = "visible";
	if(cod_usuario == undefined){
		alert("Error: se esperaba un código de usuario");
		return;
	}

	if(cod_noticia == undefined){
		alert("Error: se esperaba un código de noticia");
		return;
	}

	if(nota == undefined){
		alert("Error: se esperaba una nota");
		return;
	}

	$.ajax({
		type: "GET",
		url: "votacion_ajax.php",
		data: "action=votar&cod_usuario="+cod_usuario+"&cod_noticia="+cod_noticia+"&nota="+nota,
		success: function(msg){
			document.getElementById("txt_voto").innerHTML = msg;
		}, 
		error: function(xho){
			document.getElementById("txt_voto").innerHTML = "Error:"+xho.responseText;
		}
	});
	
	$.ajax({
		type: "GET",
		url: "votacion_ajax.php",
		data: "action=contar_votos&cod_noticia="+cod_noticia,
		success: function(ancho){
			document.getElementById("estrellitas").style.width = ancho;
		}, 
		error: function(xho){
			
		}
	});
}
Como os decía, todo lo hace bien, incluso me muestra el mensajito en el div txt_voto cuando doy un voto a una noticia cualquiera. Lo que no me hace es refrescarme el div de las estrellitas para que se vea directamente, nada más votar, cómo va el ranking y qué nota ieva.

Podeis orientarme cómo hacerlo?? Gracias.