Foros del Web » Programando para Internet » Javascript » Frameworks JS »

visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Estas en el tema de visualizar frases aleatorias desde un fichero XML (dudas y ayuda) en el foro de Frameworks JS en Foros del Web. Hola a todos! Estoy retomando el proyecto de una web y me gustaría poder hacer que en la página principal aparecieran cada unos segundos frases ...
  #1 (permalink)  
Antiguo 20/07/2010, 13:33
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Hola a todos! Estoy retomando el proyecto de una web y me gustaría poder hacer que en la página principal aparecieran cada unos segundos frases o textos aleatorios de una lista.

Había estado buscando info para hacerlo con javascript pero de está forma tendría que añadir todas las frases en un array dentro del codigo de la web y eso la podría hacer muy pesada. Además que lo que quiero es que no se tenga que recargar la web entera de nuevo.

Así que informandome he visto que se recomienda ahora usar ajax con xml. Las frases irian en el xml y se accederia y visualizarian con AJAX. La cosa es que nunca he trabajado con AJAX y no se si alguien conoce alguna web donde haya hecho algo parecido o donde tenga una base con la que empezar.

Otra duda que tengo con AJAX es que el fichero XML no se llega a descargar al cliente no? Sino que se realizan consultas al fichero en el servidor, no?
  #2 (permalink)  
Antiguo 20/07/2010, 14:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Hola

Un ejemplo
Cita:
Otra duda que tengo con AJAX es que el fichero XML no se llega a descargar al cliente no? Sino que se realizan consultas al fichero en el servidor, no?
Esto queda respondido con el ejemplo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 20/07/2010, 18:02
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Muchas gracias Adler!!

Ya he conseguido obtener datos aleatorios de un XML modificando el ejemplo que me has dicho e imprimirlos en la página web. Lo que no se es como hacer en AJAX para que cada X segundos se llame a la función que pilla los datos del XML y los imprima en la web.

He estado buscando info por google pero he encontrado ejemplos que me están liando cada vez más...
  #4 (permalink)  
Antiguo 20/07/2010, 18:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Puedes usar un temporizador como setInteval() o setTimeout()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 21/07/2010, 03:27
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Muchas gracias David!! Estoy muy contento ya que me van saliendo las cosas casi!! ^^ Tengo un problema con el bucle que he hecho de setInteval() a 5segundos. No se me hace un bucle, sino que hace 3 ó 4 pasadas y se queda sin actualizar y creo que la memoria ram que okupa el procesador se dispara porque empeiza el ventilador del portatil a soplar que vaya...

Tengo este fichero XML con frases que ahora son números:

Código:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<frases>
	<frase>
		<texto>111111111</texto>
	</frase>
	<frase>
		<texto>2222222</texto>
	</frase>
	<frase>
		<texto>333333</texto>
	</frase>
	<frase>
		<texto>444444</texto>
	</frase>
	<frase>
		<texto>555555555555</texto>
	</frase>
	<frase>
		<texto>666666666666</texto>
	</frase>
</frases>
Este fichero PHP (le tengo que cambiar el nombre jejeje) que genera un numero aleatorio entre cero y el número de frases que hay en el XML y devuelve una de las frases:

Código:
<?php

$num=rand(0,5);

$xmlDoc = new DOMDocument();
$xmlDoc->load("frases.xml");

$x=$xmlDoc->getElementsByTagName('texto');

for ($i=0; $i<=$x->length-1; $i++){
	if ($i == $num){
    	$y=($x->item($i)->parentNode);
		$cd=($y->childNodes);
  		echo($cd->item(1)->childNodes->item(0)->nodeValue);
    }
}
?>
Luego en el head de la pagina tengo puesto (tengo q cambiar el nombre de la funcion por ShowFrase):

Código:
<script type="text/javascript">
function showCD(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
setInterval("showCD()", 5000);
}
</script>
Y la llamada en el body:

Código:
<div align="center" id="txtHint">
<script language="javascript"> showCD();</script>
</div>

La web donde lo estoy probando es: http://www.disfrutaloscorrs.es/ . En la parte de abajo hay una franja negra donde se visualizan los numeritos de las frases y solo cambian 3 ó 4 veces... Luego se para y la ram y procesador se disparan!

No se como seguir.....
  #6 (permalink)  
Antiguo 21/07/2010, 05:28
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

He cambiando una pequeña cosa en el código ya que en internet explorer no cambiaba ni una sola vez el texto y creo que es por la cache del ie

Código:
<script type="text/javascript">
function showCD(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }

xmlhttp.open('GET', 'getcd.php?ck=' + (new Date()).getTime(), true); 
xmlhttp.send();
setInterval("showCD()", 5000);
}
</script>
Asi cada vez que llamo al archivo php tiene valores diferentes y lo trata como una rchivo distinto en cada pasada. Pero sigo teniendo el mismo problema, que da 4-5-6 bucles y ya no cambia más el texto, y ram y procesador disparados cada vez más..
  #7 (permalink)  
Antiguo 21/07/2010, 05:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Hola

Prueba con intervalo = setTimeout("showCD(), 5000");

Esta parte deberías de modificarla también
Cita:
function showCD(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
Cita:
function showCD()
{
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 21/07/2010, 06:16
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Es verdad que ese código en mi caso no servía para nada. Pues muchisimas gracias a todos, es una chorrada el código pero estoy super contento ahora jajajajaja.

Ya lo único que me gustaría hacer es que cuando se vaya el texto y aparezca el nuevo se haga con efecto fadein y fadeout. Ayer y hoy he estado mirando por google como se hace y es con jquery. He probado de diferentes maneras pero no me funciona y lo que más me cuesta es saber donde exactamente hay que escribir el código. Las pruebas que he andado haciendo iban por aquí:

Código:
$('#txtHint').fadeIn("slow");
	function actualizar(){
   		$('#txtHint').fadeOut("slow", showCD()); 
	}
	setTimeout( "actualizar()", 2000 );
Pero vamos, que eso creo que está fatal y menos donde lo puse además. Si me podéis guiar un poquito os lo agradecería mucho.
  #9 (permalink)  
Antiguo 21/07/2010, 09:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Si lo que quieres es que shoCD se ejecute después del efecto, debe ir sin los paréntesis:
Código Javascript:
Ver original
  1. $("#txtHint").fadeOut("slow", showCD);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 21/07/2010, 09:42
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Pero al que llama el showCD es el setTimeout:

setTimeout("showCD()", 8000);

He intentado hacer algo asi pero no va tampoco...

$("#txtHint").fadeOut("slow", setTimeout("showCD()", 8000););
  #11 (permalink)  
Antiguo 21/07/2010, 10:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Yo me basé en el código que habías publicado en el mensaje anterior.

¿En qué momento deseas realizar el efecto fade-out?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 21/07/2010, 12:46
Avatar de Eder  
Fecha de Ingreso: enero-2007
Mensajes: 41
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: visualizar frases aleatorias desde un fichero XML (dudas y ayuda)

Pues justo antes de cuando vaya a cambiarse el texto y cuando aparezca el nuevo que este haga fadein. El codigo no lo entiendo al 100%, si bastante pero no del todo y haciendo pruebas consigo solo que no funcione nada....

http://www.disfrutaloscorrs.es/

Como véis he conseguido al menos leer frases aleatorias del XML y que cada 8segundos cambien las frases en la página ^^

Etiquetas: ajax, fichero, frases, xml, aleatoria
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 04:28.