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

Problema con funcion en XAJAX

Estas en el tema de Problema con funcion en XAJAX en el foro de Frameworks JS en Foros del Web. Buenas a todos, he empezado a utilizar XAJAX para poder integrar php con ajax y tengo el siguiente problema: Antes de que se llame a ...
  #1 (permalink)  
Antiguo 07/08/2009, 13:02
 
Fecha de Ingreso: junio-2008
Mensajes: 24
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema con funcion en XAJAX

Buenas a todos, he empezado a utilizar XAJAX para poder integrar php con ajax y tengo el siguiente problema:

Antes de que se llame a la funcion "pon_definicion" creo un array con numeros aleatorios y posteriormente yo quiero utilizar este array dentro de esa función. El problema es que cada vez que llamo a la función "pon_defincion" el array ya no contiene los mismo números, es como si volviera a empezar el código php desde el principio, y me hacía falta ajax para escribir el resultado de la consulta en una parte de la página, pero ahora me encuentro con este error y no sabría como solucionarlo.

Os dejo el código:

Código PHP:
<?php
    
require ('xajax/xajax_core/xajax.inc.php');

    
$xajax = new xajax();

    
//Creo un array aleatorio de IDS para cada letra
    
$letras=array('A''B''C''D''E''F''G''H''I''J''L''M''N''Ñ''O''P''Q''R''S''T''U''V''X''Y''Z');
    
$final=array();
    include(
'conexion.php');
    
    for(
$i=0$i<count($letras); $i++){
        
$id=array(); //En ese array se guardarán los IDs de cada letra
        
        
$consulta="SELECT * FROM palabras WHERE letra='$letras[$i]'";
        
$lista=mysql_query($consulta);
        
$num=mysql_num_rows($lista);
        
        while(
$fila=mysql_fetch_row($lista))
        {
            
array_push($id$fila[0]);
        }        
        
$aleatorio rand(0,count($id)-1); //Genera un numero aleatorio de 0 a la longitud del array id menos 1
        
array_push($final$id[$aleatorio]); //Guarda en el array final el ID de la palabra elegida al azar
    
}
    

    function 
pon_definicion($pos_letra){
        global 
$final;
        for(
$i=0$i<count($final); $i++){
            
$consulta=$consulta." - ".$final[$i];
        }
        
           
$respuesta = new xajaxResponse();
                  
$respuesta->Assign("definicion","innerHTML",$consulta);

           return 
$respuesta;
    }

    
$xajax->register(XAJAX_FUNCTION'pon_definicion');

    
$xajax->processRequest();
?>
Si alguien puede echarme una mano muchas gracias.
  #2 (permalink)  
Antiguo 09/08/2009, 04:36
 
Fecha de Ingreso: junio-2008
Mensajes: 24
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Problema con funcion en XAJAX

No sé si me habré explicado bien, alguien podría ayudarme?

De todas formas creo que es eso que dije antes, que el código php se recarga desde el principio cada vez que llamo a esa función.

Si alguien podría darme alguna idea sobre como hacer lo que pretendo... os explico por si me podeis echar una mano:

Pues tengo una pagina javascript que no debe actualizarse, pero cada vez que pulse un botón debe mostrarse una pregunta en un apartado y esa pregunta la debo sacar de una base de datos, tengo que hacerlo con php, pero no se como hacerlo sin recargar la página. Creia que XAJAX iba a ser mi solución pero el array aleatorio que creo al principio debe permanecer durante toda la partida intacto y en este caso no es así.

Si alguien puede echarme una mano se lo agradecería mucho.
  #3 (permalink)  
Antiguo 09/08/2009, 22:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema con funcion en XAJAX

El problema, o más bien la cuestión es que PHP es un lenguaje Stateless, por lo que cada request, sin importar si es en AJAX crean una nueva instancia.

Necesitas ver la forma de persistir esa información ya sea usando sesiones, o una base de datos, ya que de la forma que lo haces, el array se va resetear en cada respuesta AJAX.

Saludos.
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 23:54.