Foros del Web » Programando para Internet » PHP »

como ejecutar dos veces la funcion en xaxaj

Estas en el tema de como ejecutar dos veces la funcion en xaxaj en el foro de PHP en Foros del Web. hola es decir tengo la siguiente pagina, Objetivo: Cuando le de un click el contador vaya incrementando una unidad mi codigo es este y funciona ...
  #1 (permalink)  
Antiguo 08/11/2011, 16:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 15 años, 7 meses
Puntos: 1
como ejecutar dos veces la funcion en xaxaj

hola es decir tengo la siguiente pagina,
Objetivo: Cuando le de un click el contador vaya incrementando una unidad
mi codigo es este y funciona bien pero al darle clcik al boton sigue mostrando el valor de 1 cuando deberia ser 2,3,4,5, etc

ojala me puedan ayudar saludos !!
Código HTML:
<?

require ('xajax/xajax_core/xajax.inc.php'); 

//instanciamos el objeto de la clase xajax
$xajax = new xajax();


function prueba(){
//instanciamos el objeto para generar la respuesta con ajax
$respuesta = new xajaxResponse();
//escribimos en la capa con id="respuesta" el texto que aparece en $salida
$respuesta->Assign("prueba","innerHTML",$val+1);
return $respuesta;
return $val;
}



//registramos la función creada anteriormente al objeto xajax
$xajax->registerFunction("prueba");




//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Electrostaticos</title>

<?
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
$xajax->printJavascript("xajax/");
?>
</head>
<body> 

<input name="test" type="button" value="test" onclick="xajax_prueba()"/>
<div id="prueba"></div>
</body>
</html> 
  #2 (permalink)  
Antiguo 08/11/2011, 16:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: como ejecutar dos veces la funcion en xaxaj

Eso es porque declaras $val dentro de la función, para que persista entre respuestas, tienes que forzosamente usar ya sea una sesión, o guardar el valor de $val en una base de datos o archivo de texto desde donde puedas leer de regreso la variable.

Saludos.
  #3 (permalink)  
Antiguo 08/11/2011, 16:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: como ejecutar dos veces la funcion en xaxaj

Cita:
Iniciado por GatorV Ver Mensaje
Eso es porque declaras $val dentro de la función, para que persista entre respuestas, tienes que forzosamente usar ya sea una sesión, o guardar el valor de $val en una base de datos o archivo de texto desde donde puedas leer de regreso la variable.

Saludos.
no creo, porque ya lo hice fuera de la funcion y no jala,
no creo que deba guardar el valor en una bd solo para hacer que muestre cuantos click al boton estoy haciendo no creeS?
  #4 (permalink)  
Antiguo 08/11/2011, 16:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: como ejecutar dos veces la funcion en xaxaj

Entonces usa una sesión, recuerda que PHP es un lenguaje stateless, por lo cual por cada request, aun cuando sea por ajax, se vuelve a iniciar todo, y por eso la variable siempre es igual a 0.

Saludos.
  #5 (permalink)  
Antiguo 08/11/2011, 17:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: como ejecutar dos veces la funcion en xaxaj

Cita:
Iniciado por GatorV Ver Mensaje
Entonces usa una sesión, recuerda que PHP es un lenguaje stateless, por lo cual por cada request, aun cuando sea por ajax, se vuelve a iniciar todo, y por eso la variable siempre es igual a 0.

Saludos.
me puedes ayudar, ya que ya la meti en una sesion y no em queda :(
mira

Código PHP:
<? session_start();
 
$_SESSION['CONTA']=0;
require (
'xajax/xajax_core/xajax.inc.php'); 

//instanciamos el objeto de la clase xajax
$xajax = new xajax();


function 
prueba(){
//instanciamos el objeto para generar la respuesta con ajax
$respuesta = new xajaxResponse();
$contador=$contador+1;
$_SESSION['CONTA']=+1;
//escribimos en la capa con id="respuesta" el texto que aparece en $salida
$respuesta->Assign("prueba","innerHTML",$_SESSION['CONTA']);
return 
$respuesta;
return 
$contador;
}



//registramos la función creada anteriormente al objeto xajax
$xajax->registerFunction("prueba");




//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Electrostaticos</title>

<?
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
$xajax->printJavascript("xajax/");
?>
</head>
<body> 
<? echo $_SESSION['CONTA']?>
<input name="test" type="button" value="test" onclick="xajax_prueba()"/>
<div id="prueba"></div>
</body>
</html>
gracias1!
  #6 (permalink)  
Antiguo 08/11/2011, 17:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: como ejecutar dos veces la funcion en xaxaj

Eso es porque al inicio del script siempre asignas el contador a 0, tienes que hacer un condicional primero, de si no existe contador, lo crees y asignas a 0, y ya posteriormente lo vas incrementando.

Saludos.
  #7 (permalink)  
Antiguo 08/11/2011, 22:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: como ejecutar dos veces la funcion en xaxaj

Cita:
Iniciado por mega0079
no creo que deba guardar el valor en una bd solo para hacer que muestre cuantos click al boton estoy haciendo no creeS?
La verdad no le veo sentido a usar AJAX para actualizar un contador que no va a tener persistencia mas alla de la misma pagina, con javascript "puro" te basta y sobra para hacer eso.

Ahora, si solo estas probando y entendiendo AJAX, te sugiero buscar ejemplos o tutoriales que realmente tengan utilidad.

Ejemplo de solo Javascript:
Código Javascript:
Ver original
  1. function clicks(divId) {
  2.     var div = document.getElementById(divId);
  3.     clicks = (div.innerHTML * 1) + 1; // Multiplico para evitar concatenar... podria pasar
  4.     div.innerHTML = clicks;
  5. }
Código HTML:
Ver original
  1. <input name="test" type="button" value="test" onclick="clicks('prueba);"/>
  2. <div id="prueba">0</div>

No se si funcione, pero por ahi van los tiros y, vuelvo a insistir, practica y aprende con algo que realmente te vaya a servir en aplicaciones futuras... de hecho, hasta esto te serviria si agregas persistencia, como te dijo GatorV, guardando en archivo de texto o base de datos.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 09/11/2011, 09:43
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: como ejecutar dos veces la funcion en xaxaj

Gracias por sus respuestas amigos, miren laverdad es que es un sistema de quinielas, entonces
cuando hacen clicks en 3 checkbox, se debe asignar un uno a el contador combinacionstriples
cuando hacen 2 clicks, se debe asignar un valor a el contador de combinaciones dobles

y asi, pero todo en tiempo real, osea por eso uso xjajax, ademas de que el javascript no lo domino muy bien, pero bueno tendre en cuanta tu comentario gatorv muchas gracias y probare, sino pues me metere a javascript como dice Triby

Resuleto GatorV tenias razon, saludos!!!!!! :D

Última edición por mega0079; 09/11/2011 a las 09:56

Etiquetas: funcion, html, veces
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 10:20.