Mensaje de carga usando xajax [SOLUCIONADO]

Iniciado por novalida, 27 Agosto 2010, 19:37 PM

0 Miembros y 1 Visitante están viendo este tema.

novalida

Hola!!! :)
Estoy aprendiendo a utilizar este framework para php para mostrar un mensaje de carga mientras se espera al respuesta del servidor al hacerle una solicitud.
Tengo éste código:


<?
require ('xajax/xajax.inc.php');

function funcion_lenta()
{
  sleep(3);
 
  $objResponse = new xajaxResponse();
  $objResponse->addAssign("capa_actualiza","innerHTML","Finalizado");
 
  return $objResponse;
}

$xajax = new xajax();
$xajax->registerFunction('funcion_lenta');
$xajax->processRequests();

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
  <title>Ejemplo de mostrar un aviso de carga de la página</title>
  <?
  $xajax->printJavascript("xajax/");
  ?>
  <script type="text/javascript">
<!--
  function muestra_cargando(){
     xajax.$('MensajeCarga').style.display='block';
  }
  function oculta_cargando(){
     xajax.$('MensajeCarga').style.display='none';
  }
 
  xajax.loadingFunction = muestra_cargando;
  xajax.doneLoadingFunction = oculta_cargando;
// --></script>
</head>

<body>

<div id="capa_actualiza">
<a href="javascript:void(xajax_funcion_lenta())">Llamar por ajax a una función lenta usando xajax</a>!
</div>


<div id="MensajeCarga" style="display: none;">
Cargando!...
</div>

</body>
</html>


y al ejecutar el script me da el siguietne resutlado, el cuál no tengo ni idea de cómo solucionar o qué hacer, ya que la variable existe y no entiendo por qué me da el error que no está definida :S

Citar
Detalles de error de página web

Agente de usuario: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Fecha: Fri, 27 Aug 2010 17:36:22 UTC


Mensaje: 'xajax' no está definido
Línea: 36
Carácter: 4
Código: 0
URI: http://localhost/borrar/newfile.php


Alguien me puede echar una mano??
Muchas gracias :)

Nakp

como es que mezclas php con javascript (los objetos) y... jquery????? x_x

lee esto :P

http://xajaxproject.org/en/docs-tutorials/learn-xajax-in-10-minutes/
Ojo por ojo, y el mundo acabará ciego.

novalida

Muy buenas,
al final no sé muy bien cómo pero se solucionó cambiando las etiquetas de php. No tengo ni idea de por qué ahora sí funciona y antes no lo hacía.
Envío el código actualizado a la versión de xajax 0.5 por si a alguien le puede ser de utilidad.


<?php
// Incluye la librería de clases xajax
require ('xajax/xajax_core/xajax.inc.php');

// Se crea una nueva instancia de un objeto xajax
$xajax = new xajax();

// Define la ruta para las llamadas a xajax
$xajax->configure('javascript URI','xajax/');

// Registramos el nombre de la función que queremos llamar mediante xajax
$xajax->register(XAJAX_FUNCTION'llamada_servidor');

// Procedimiento por el que xajax maneja las peticiones realizadas antes de enviar salida alguna
$xajax->processRequest();

// Función en la que se realiza una llamada al servidor
function llamada_servidor()
{
// Función que se realiza: pausa de 2 segundos
sleep(2);

// Se crea una nueva instancia de un objeto xajaxResponse
$objResponse = new xajaxResponse();
// Envía al navegador el comando como respuesta a la petición xajax
$objResponse->Assign("capa_actualiza","innerHTML","Finalizado");

return 
$objResponse;
}
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Mostrar imagen de carga de datos</title>

<?php
// Permite a xajax generar el código javascript necesario
$xajax->printJavascript();
?>


   <script type="text/javascript">
   <!--
// Función que muestra la imagen de "cargando..." mientras se realizan las acciones con el servidor
   function muestra_cargando(){
   
      xajax.dom.create("capa_actualiza","div", "cargando");
      xajax.$('cargando').innerHTML='<img src="cargando.gif" alt="cargando..." border="0">';
   }

   // Función que se lleva a cabo cuando se ha devuelto la respuesta del servidor
   function oculta_cargando(){
      // lo que sea
   }
   
   // Determina qué función se llama mientras se espera respuesta del servidor
   xajax.callback.global.onResponseDelay = muestra_cargando;
   // Determina qué función se llama cuando se ha devuelto la respuesta del servidor
   xajax.callback.global.onComplete = oculta_cargando;
   // --></script>
</head>

<body>

<div id="capa_actualiza">
<a href="javascript:void(xajax_llamada_servidor())">Llamada al servidor</a>
</div>

</body>
</html>


Respecto a lo de mezclar los objetos php con javascript creo que es porque el framework xajax "interactúa" (no encuentro la mejor palabra para poder decirlo) con javascript. Tampoco tengo mucha idea de xajax y prácticamente nada de javascript, así que poco puedo aporta para ponerlo un poquito más claro.
De jquery... no tengo ni idea de lo que es   :silbar: pero ya lo aprenderé :).

En definitiva, el código por fin es funcional, requiriendo incluir xajax 0.5 en la ruta necesaria y la imagen gif que deseemos visualizar durante la carga.

Muchas gracias por haber contestado al mensaje.

Un saludo,
Novalida.

Nakp

jajaja pues eso xD que los objetos que usabas (en javascript) parecian de jquery por el signo $... con xajax no insertas ningun codigo en javascript para interactuar con lo que creaste en php xD

salu2
Ojo por ojo, y el mundo acabará ciego.