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

Enviar petición y mientras mostrar "mensaje"

Estas en el tema de Enviar petición y mientras mostrar "mensaje" en el foro de Frameworks JS en Foros del Web. Buenas, Tengo la pantalla ¿Olvidaste la contraseña? el usuario escribe su email y pulsa el botón enviar, se hacen varias operaciones en la base de ...
  #1 (permalink)  
Antiguo 18/12/2010, 06:39
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Enviar petición y mientras mostrar "mensaje"

Buenas,

Tengo la pantalla ¿Olvidaste la contraseña? el usuario escribe su email y pulsa el botón enviar, se hacen varias operaciones en la base de datos y se envía un correo. Hasta que no finaliza todo ese proceso no carga la pantalla siguiente.

Se puede hacer que mientras el usuario espera a que acabe todo ese proceso mostrarle un mensaje animado como los típicos "loading..."?

Uso el framework jquery.

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 18/12/2010, 11:04
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Enviar petición y mientras mostrar "mensaje"

Te mando un ejemplo

Código Javascript:
Ver original
  1. $.ajax(
  2.         {
  3.             url:'http://localhost/pruebajax/public/orden/agregar',
  4.             type:'POST',
  5.             data:'id='+prod,
  6.             beforeSend:function(objeto){
  7.                 $('#carga').css({display:'block'});
  8.             },
  9.             complete:function(){$('#carga').css('display','none');}
  10.         }
  11.     );

en mi html tengo el div creado
Código HTML:
Ver original
  1. <div id="carga" style="display:none">
  2.     <img src="http://localhost/pruebajax/public/img/cargando.gif" />
  3.     </div>

En el beforeSend se muestra el div donde esta la imagen de loading y cuanco el proceso finaliza se da el complete y se oculta nuevamente el div que contiene a la imagen

Espero te ayude
Saludos

Saludos
  #3 (permalink)  
Antiguo 20/12/2010, 10:13
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por alfcm Ver Mensaje
Te mando un ejemplo

Código Javascript:
Ver original
  1. $.ajax(
  2.         {
  3.             url:'http://localhost/pruebajax/public/orden/agregar',
  4.             type:'POST',
  5.             data:'id='+prod,
  6.             beforeSend:function(objeto){
  7.                 $('#carga').css({display:'block'});
  8.             },
  9.             complete:function(){$('#carga').css('display','none');}
  10.         }
  11.     );

en mi html tengo el div creado
Código HTML:
Ver original
  1. <div id="carga" style="display:none">
  2.     <img src="http://localhost/pruebajax/public/img/cargando.gif" />
  3.     </div>

En el beforeSend se muestra el div donde esta la imagen de loading y cuanco el proceso finaliza se da el complete y se oculta nuevamente el div que contiene a la imagen

Espero te ayude
Saludos

Saludos
Estoy usando tu ejemplo pero no consigo ver como envia los datos por ajax y mientras se recibe la respuesta muestra el cargando...

Mi fichero formulario.php

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. $.ajax(
  3.         {
  4.             url:'procesa.php',
  5.             type:'POST',
  6.             //data:'id='+prod,
  7.             data:'user=5',
  8.             beforeSend:function(objeto){
  9.                 $('#carga').css({display:'block'});
  10.             },
  11.             complete:function(){$('#carga').css('display','none');}
  12.         }
  13.     );
  14. </head>
  15. <div id="formulario">
  16.     <form method="post" action="procesa.php">
  17.         <fieldset>
  18.             <legend>Registrarse</legend>
  19.             <div class="medidas">
  20.                 <label for="user">Usuario:</label>
  21.                 <input id="user" name="user">
  22.             </div>
  23.             <div class="medidas">
  24.                 <label for="pass">Contraseña:</label>
  25.                 <input type="password" id="pass" name="pass">
  26.             </div>
  27.             <div class="check">
  28.                 <input type="checkbox" id="remember" name="remember">
  29.                 <label for="recordar">Recordar mi nombre de usuario</label>
  30.             </div>
  31.         </fieldset>
  32.         <div>
  33.         <input type="submit" id="login" value="Ingresar">
  34.         </div>
  35.     </form>
  36. </div>
  37. <div id="carga" style="display:none">
  38.     <img src="cargando.gif" />
  39. </div>
  40. </body>
  41. </html>

procesa.php

Código PHP:
Ver original
  1. <?php
  2. /* Recibe la respuesta del formulario
  3. Hace lo tenga que hacer y devuelve una respuesta al formulario que puede ser
  4. Se ha creado una sesión.
  5. */
  6. echo "ID RECIBIDO: ".$_POST['id'];
  7.  
  8. ?>

Qué falta alfcm?

Muchas gracias
  #4 (permalink)  
Antiguo 20/12/2010, 11:01
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

es que si es mur rápido no te vas a dar cuenta, simula que el script php tarda unos segundos con sleep(5)
  #5 (permalink)  
Antiguo 20/12/2010, 13:38
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Enviar petición y mientras mostrar "mensaje"

Exacto, ya que de seguro no es un proceso complejo el que ejecutas, por eso lo hace tan rapido que ni un segundo dura, usa el sleep() en PHP como dijo Dany_s, ademas veo que mandas como parametro "user" y en el PHP quieres recuperar con otro nombre de variable "id"

Saludos
  #6 (permalink)  
Antiguo 20/12/2010, 14:37
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por alfcm Ver Mensaje
Exacto, ya que de seguro no es un proceso complejo el que ejecutas, por eso lo hace tan rapido que ni un segundo dura, usa el sleep() en PHP como dijo Dany_s, ademas veo que mandas como parametro "user" y en el PHP quieres recuperar con otro nombre de variable "id"

Saludos
He añadido el sleep en el script que procesa.php

Código PHP:
Ver original
  1. <?php
  2. /* Recibe la respuesta del formulario
  3. Hace lo tenga que hacer y devuelve una respuesta al formulario que puede ser
  4. Se ha creado una sesión.
  5. */
  6. echo "USER RECIBIDO: ".$_POST['user'];
  7. sleep(5);
  8. ?>

Ahora tarda en enviar los datos sin embargo no muestra la imagen.
Lo he probado tanto en Firefox como en IE pero nada

En la barra de debug del firebug me dice

$ is not defined
$.ajax(
linea 4

Me falta declarar algo antes?

Muchas gracias
  #7 (permalink)  
Antiguo 20/12/2010, 14:42
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Enviar petición y mientras mostrar "mensaje"

no tienes incluido la libreria JQUERY, descargalo de internet y luego modificas el head de tu html, lo pones como primera linea esto:
<script src="tucarpetalibrerias/jquery.js" type="text/javascript"></script>
  #8 (permalink)  
Antiguo 20/12/2010, 15:42
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por alfcm Ver Mensaje
no tienes incluido la libreria JQUERY, descargalo de internet y luego modificas el head de tu html, lo pones como primera linea esto:
<script src="tucarpetalibrerias/jquery.js" type="text/javascript"></script>
Cierto, no sé porque pensé que en este ejemplo no me hacia falta, error mio.

Ahora ya no dá ningún error de debug, y la petición veo a través del firebug que la envia y recibe, pero no hay manera de que salga la imagen

Este es el código.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  5. <script type="text/javascript">
  6. $.ajax(
  7.         {
  8.             url:'procesa.php',
  9.             type:'POST',
  10.             //data:'id='+prod,
  11.             data:'user=5',
  12.             beforeSend:function(objeto){
  13.                 $('#carga').css({display:'block'});
  14.             },
  15.             complete:function(){$('#carga').css('display','none');}
  16.         }
  17.     );
  18. </head>
  19. <div id="formulario">
  20.     <form method="post" action="procesa.php">
  21.         <fieldset>
  22.             <legend>Registrarse</legend>
  23.             <div class="medidas">
  24.                 <label for="user">Usuario:</label>
  25.                 <input id="user" name="user">
  26.             </div>
  27.             <div class="medidas">
  28.                 <label for="pass">Contraseña:</label>
  29.                 <input type="password" id="pass" name="pass">
  30.             </div>
  31.             <div class="check">
  32.                 <input type="checkbox" id="remember" name="remember">
  33.                 <label for="recordar">Recordar mi nombre de usuario</label>
  34.             </div>
  35.         </fieldset>
  36.         <div>
  37.         <input type="submit" id="login" value="Ingresar">
  38.         </div>
  39.     </form>
  40. </div>
  41. <div id="carga" style="display:none">
  42.     <img src="cargando.gif" />
  43. </div>
  44. </body>
  45. </html>

Si quito la el display:none del la linea <div id="carga" style="display:none"> sí que se muestra la imagen, así que descarto un problema de ruta no?

Alguna otra idea?

Muchas gracias
  #9 (permalink)  
Antiguo 20/12/2010, 15:46
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Enviar petición y mientras mostrar "mensaje"

si vas a procesar mediante ajax, entonces no uses SUBMIT usa BUTTON, son el Submit te vas directamente al servidor

<input type="button" id="login" value="Ingresar" />

yo uso lo mismo y me funciona a la perfeccion tal como te mande en un inicio el ejemplo

Saludos
  #10 (permalink)  
Antiguo 20/12/2010, 16:41
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

te falta el evento ready http://api.jquery.com/ready/
  #11 (permalink)  
Antiguo 20/12/2010, 16:51
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cambie el button como dijiste alfcm pero seguía sin funcionar
<input type="button" id="login" value="Ingresar" />

Cita:
Iniciado por Dany_s Ver Mensaje
te falta el evento ready http://api.jquery.com/ready/
Puse además el ready y ahora sí me aparece el gif cargando, pero me aparece nada mas entrar en la página.
Mi intención es que solo aparezca cuando el usuario hace clic en el botón enviar formulario y espera hasta que se procesa la respuesta.

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2. $.ajax(
  3.     {
  4.         url:'procesa.php',
  5.         type:'POST',
  6.         //data:'id='+prod,
  7.         data:'user=5',
  8.         beforeSend:function(objeto){
  9.             $('#carga').css({display:'block'});
  10.         },
  11.         complete:function(){$('#carga').css('display','none');}
  12.     });
  13. });

Debo modificar la llamada en ajax para que solo se ejecute cuando se envia los datos del formulario?

Muchas gracias
  #12 (permalink)  
Antiguo 20/12/2010, 17:01
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

claro, tenes que interceptar el submit, no hagas con evento click en un boton porque al dar enter en un campo no va a funcionar

http://api.jquery.com/submit/
  #13 (permalink)  
Antiguo 20/12/2010, 17:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por Dany_s Ver Mensaje
claro, tenes que interceptar el submit, no hagas con evento click en un boton porque al dar enter en un campo no va a funcionar

http://api.jquery.com/submit/
Cómo debería hacerlo? se puede meter de esta manera?

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#form').submit(function() {
  3.       $.ajax(
  4.         {
  5.             url:'procesa.php',
  6.             type:'POST',
  7.             //data:'id='+prod,
  8.             data:'user=5',
  9.             beforeSend:function(objeto){
  10.                 $('#carga').css({display:'block'});
  11.             },
  12.             complete:function(){$('#carga').css('display','none');}
  13.         });
  14.     });
  15. });

El id del formulario es #form y cambie de nuevo el submit por
<input type="submit" value="Enviar" />

Cuando pulso enviar me aparece la imagen pero enseguida desaparece.

Creo que no lo hago bien, puede ser?

Muchas gracias
  #14 (permalink)  
Antiguo 20/12/2010, 17:55
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

como está en el ejemplo de la doc, con un return false; al final para cancelar el comportamiento

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#form').submit(function() {
  3.       $.ajax(
  4.         {
  5.             url:'procesa.php',
  6.             type:'POST',
  7.             //data:'id='+prod,
  8.             data:'user=5',
  9.             beforeSend:function(objeto){
  10.                 $('#carga').css({display:'block'});
  11.             },
  12.             complete:function(){$('#carga').css('display','none');}
  13.         });
  14. return false;
  15.     });
  16. });
  #15 (permalink)  
Antiguo 20/12/2010, 20:54
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 10 meses
Puntos: 322
Respuesta: Enviar petición y mientras mostrar "mensaje"

La forma correcta es usando preventDefault;
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#form').submit(function(event) {
  3.       event.preventDefault()
  4.       $.ajax(
  5.         {
  6.             url:'procesa.php',
  7.             type:'POST',
  8.             //data:'id='+prod,
  9.             data:'user=5',
  10.             beforeSend:function(objeto){
  11.                 $('#carga').css({display:'block'});
  12.             },
  13.             complete:function(){$('#carga').css('display','none');}
  14.         });
  15.     });
  16. });

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #16 (permalink)  
Antiguo 21/12/2010, 03:14
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Muchas gracias, funcionó perfecto, utilice el ejemplo de Sourcegeek

Cuando se pulsa el botón enviar, me gustaría que se enviaran los datos del formulario, esto creo que lo he conseguido con el serialize();

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#form').submit(function(event) {
  3.      var datos = $(this).serialize();  
  4.       event.preventDefault()
  5.       $.ajax(
  6.         {
  7.             url:'procesa.php',
  8.             type:'POST',
  9.             data:datos,
  10.             beforeSend:function(objeto){
  11.                 $('#carga').css({display:'block'});
  12.             },
  13.             complete:function(){$('#carga').css('display','none');}
  14.         });
  15.     });
  16. });

Pero me gustaría que si envío los datos al script procesa.php y éste crea alguna sesion o algo, la página del formulario se entere, es la gracia del asunto... si todo lo que envío luego no hay forma de retornar la respuesta a la pagina origen no me sirve, y se debe poder incluso sesiones no?

Ahora mismo tengo lo siguiente

formulario

Código HTML:
Ver original
  1. <?php session_start(); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function() {
  8.     $('#form').submit(function(event) {
  9.      var datos = $(this).serialize();  
  10.       event.preventDefault()
  11.       $.ajax(
  12.         {
  13.             url:'procesa.php',
  14.             type:'POST',
  15.             data:datos,
  16.             beforeSend:function(objeto){
  17.                 $('#carga').css({display:'block'});
  18.             },
  19.             complete:function(){$('#carga').css('display','none');}
  20.         });
  21.     });
  22. });
  23. </head>
  24. <div id="formulario">
  25.     <form method="post" id="form" action="procesa.php">
  26.         <fieldset>
  27.             <legend>Registrarse</legend>
  28.             <div class="medidas">
  29.                 <label for="user">Usuario:</label>
  30.                 <input id="user" name="user">
  31.             </div>
  32.             <div class="medidas">
  33.                 <label for="pass">Contraseña:</label>
  34.                 <input type="password" id="pass" name="pass">
  35.             </div>
  36.             <div class="check">
  37.                 <input type="checkbox" id="remember" name="remember">
  38.                 <label for="recordar">Recordar mi nombre de usuario</label>
  39.             </div>
  40.         </fieldset>
  41.         <div>
  42.         <input type="submit" value="Enviar" />
  43.         </div>
  44.     </form>
  45. </div>
  46. <div id="carga" style="display:none">
  47.     <img src="cargando.gif" />
  48. </div>
  49. <?php
  50. if ($_SESSION["correcto"]){
  51.     echo "SESION RECIBIDA";
  52. }else{
  53.     echo "NINGUNA RECIBIDA";
  54. }
  55. ?>
  56.  
  57. </body>
  58. </html>

procesa.php

Código PHP:
Ver original
  1. <?php
  2. /* Recibe la respuesta del formulario
  3. Hace lo tenga que hacer y devuelve una respuesta al formulario que puede ser
  4. Se ha creado una sesión.
  5. */
  6. print_r($_POST);
  7. sleep(5);
  8. if ($_POST['user']=='dani'){
  9.     $_SESSION["correcto"] = true;
  10. }
  11. ?>

Cómo puedo hacer para enviarle las sesiones que cree en el script remoto? porque tal y como está ahora la pag. del formulario no se entera, es como si para enterarse tuviera que recargar la página sino no se entera...

Muchas gracias
  #17 (permalink)  
Antiguo 21/12/2010, 07:35
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por Sourcegeek Ver Mensaje
La forma correcta es usando preventDefault;
Saludos!
¿Correcta por?
preventDefault cancela el comportamiento y con return false cancela el comportamiento y el burbujeo

no hay nada incorrecto, de hecho en los ejemplos de jquery lo hacen con return false
  #18 (permalink)  
Antiguo 21/12/2010, 07:42
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

fijate en la doc la función de callback success le podés indicar un parámetro que es lo que te devuelve la la página, puede ser html, json, xml, etc

podes devolver un json y cuando recibis la respuesta usas esos datos
  #19 (permalink)  
Antiguo 21/12/2010, 08:38
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por Dany_s Ver Mensaje
fijate en la doc la función de callback success le podés indicar un parámetro que es lo que te devuelve la la página, puede ser html, json, xml, etc

podes devolver un json y cuando recibis la respuesta usas esos datos
Sé que se puede devolver un json, pero ¿qué pasa con las variables de sesión? por mucho que este script (url:'procesa.php',) reciba los datos del formulario, ¿no puedo generar sesiones y luego consultarlas desde la pagina del formulario sin tener que recargar la página?

Muchas gracias
  #20 (permalink)  
Antiguo 21/12/2010, 09:12
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: Enviar petición y mientras mostrar "mensaje"

si se puede, no lo probaste?
  #21 (permalink)  
Antiguo 21/12/2010, 11:16
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por Dany_s Ver Mensaje
si se puede, no lo probaste?
A mi no me funciona Dany_s

Puedes mirar si el código que puse es correcto?
http://www.forosdelweb.com/f127/envi...6/#post3678846

La variable de sesión puede que se cree, pero cómo se entera la pagina del formulario que se ha creado, sin recargar la pagina, no se puede no?

Muchas gracias
  #22 (permalink)  
Antiguo 21/12/2010, 11:42
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Enviar petición y mientras mostrar "mensaje"

Tu quieres comprobar solamente que se haya creado la variable session sin que recarge la pagina, bueno algo simple que me devolvera por defecto un string ya que solo es para comprobar, pero si quisiera un listado entonces en ese caso me convendria devolver un formato json

Agregando success

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#form').submit(function(event) {
  3.      var datos = $(this).serialize();  
  4.       event.preventDefault()
  5.       $.ajax(
  6.         {
  7.             url:'procesa.php',
  8.             type:'POST',
  9.             data:datos,
  10.             beforeSend:function(objeto){
  11.                 $('#carga').css({display:'block'});
  12.             },
  13.             success:function(data){
  14.                       alert(data);
  15.              },
  16.             complete:function(){$('#carga').css('display','none');}
  17.         });
  18.     });
  19. });

y en tu php
Código PHP:
Ver original
  1. if ($_POST['user']=='dani'){
  2.     $_SESSION["correcto"] = 'BIENVENIDO';
  3. }else{
  4.    $_SESSION["correcto"] = 'SIN ACCESO';
  5. }
  6.  
  7. echo $_SESSION["correcto"];

Saludos
  #23 (permalink)  
Antiguo 21/12/2010, 11:49
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Enviar petición y mientras mostrar "mensaje"

Cita:
Iniciado por alfcm Ver Mensaje
Tu quieres comprobar solamente que se haya creado la variable session sin que recarge la pagina, bueno algo simple que me devolvera por defecto un string ya que solo es para comprobar, pero si quisiera un listado entonces en ese caso me convendria devolver un formato json

Agregando success

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#form').submit(function(event) {
  3.      var datos = $(this).serialize();  
  4.       event.preventDefault()
  5.       $.ajax(
  6.         {
  7.             url:'procesa.php',
  8.             type:'POST',
  9.             data:datos,
  10.             beforeSend:function(objeto){
  11.                 $('#carga').css({display:'block'});
  12.             },
  13.             success:function(data){
  14.                       alert(data);
  15.              },
  16.             complete:function(){$('#carga').css('display','none');}
  17.         });
  18.     });
  19. });

y en tu php
Código PHP:
Ver original
  1. if ($_POST['user']=='dani'){
  2.     $_SESSION["correcto"] = 'BIENVENIDO';
  3. }else{
  4.    $_SESSION["correcto"] = 'SIN ACCESO';
  5. }
  6.  
  7. echo $_SESSION["correcto"];

Saludos
Pero a lo que voy es que si tienes que crear X variables de sesión, no está pensado ajax para crearlas, simplemente es para enviar/recibir datos en formato comúnmente en json... no?
Aunque a lo mejor si que las crea internamente, y cuando el usuario recarga las paginas posteriores podrá ver que las variables si que se crearon a través del formulario, verdad? esa es mi esperanza que probaré en breve...
  #24 (permalink)  
Antiguo 21/12/2010, 11:57
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Enviar petición y mientras mostrar "mensaje"

Claro q se puede neodany, para que compruebes crea otra pagina tupagina.php y adentro escribe

<?php
session_start();
echo $_SESSION["correcto"];
?>

y veras que aun persiste la variable session

Saludos

Etiquetas: enviar, mientras
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:18.