Foros del Web » Programando para Internet » Jquery »

[Problema] Ajax funciona solo una vez

Estas en el tema de [Problema] Ajax funciona solo una vez en el foro de Jquery en Foros del Web. Bueno gente, vi una cantidad de post por forosdelweb con el mismo problema, pero aun así, no lo pude solucionar. El tema es que estoy ...
  #1 (permalink)  
Antiguo 22/12/2012, 01:31
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 8 meses
Puntos: 1
[Problema] Ajax funciona solo una vez

Bueno gente, vi una cantidad de post por forosdelweb con el mismo problema, pero aun así, no lo pude solucionar.
El tema es que estoy haciendo un login con ajax y jquery, y funciona solo la primera vez, luego te recarga toda la página.

Les dejo el código:

Código Javascript:
Ver original
  1. var x = $(document);
  2. x.ready (function () {
  3.     var login = $('#login-form');
  4.     login.stop(true).hover (function () {
  5.             login.stop(true).animate({
  6.                 'margin-top' : '0'
  7.             })
  8.         },
  9.         function () {
  10.             login.stop(true).animate({
  11.                 'margin-top' : '-160'
  12.             })
  13.         }
  14.     )
  15.    
  16.     var submit = $('#submit');
  17.     submit.click (function () {
  18.         var user = $('#user').attr('value');
  19.         var passwd = $('#passwd').attr('value');
  20.         var profile = $('#profile');
  21.         $.ajax ({
  22.             async: true,
  23.             type: 'POST',
  24.             dataType: 'html',
  25.             contentType: 'application/x-www-form-urlencoded',
  26.             url: 'login.php',
  27.             data: 'user='+user+'&passwd='+passwd,
  28.             beforeSend: function () {
  29.                 $('#login-form form').html('<p><img src="images/weed.gif" title="weed" alt="weed"/></p>');
  30.             },
  31.             success: function (datos) {
  32.                 if (datos.indexOf('incorrectos') != -1) {
  33.                     $('#login-form').html(datos);
  34.                 } else {
  35.                     $('#login').html(datos);
  36.                 }
  37.             },
  38.             timeout: 4000,
  39.             error: function () {
  40.                 login.text('Problemas en el servidor. Intente más tarde.');
  41.             }
  42.         });
  43.         return false;
  44.     })
  45.    
  46.     var logout = $('#logout');
  47.     logout.click (function () {
  48.         $.ajax ({
  49.             async: true,
  50.             type: 'POST',
  51.             dataType: 'html',
  52.             contentType: 'application/x-www-form-urlencoded',
  53.             url: 'logout.php',
  54.             beforeSend: function () {
  55.                 $('#profile').html('<p><img src="images/weed.gif" title="weed" alt="weed"/></p>');
  56.             },
  57.             success: function(datos) {
  58.                 $('#profile').html('');
  59.                 $('#login').html(datos);
  60.             },
  61.             timeout: 4000,
  62.             error: function () {
  63.                 login.text('Problemas en el servidor. Intente más tarde.');
  64.             }
  65.         });
  66.         return false;
  67.     })
  68.    
  69. })

y la web para que vean de lo que hablo, intenten loguearse 2 veses y van a ver lo que pasa.

http://feme.zapto.org/faso/
__________________
Blog de Informatíca y Tecnología ;)
  #2 (permalink)  
Antiguo 22/12/2012, 07:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: [Problema] Ajax funciona solo una vez

Porque cuando recibes la respuesta del servidor la primera vez reemplazas todo el contenido de #login-form, por lo que el listener que tenías del evento click se pierde.

Puedes, entre otras cosas, no reemplazar todo el contenido, mostrar solo el mensaje de error, o volver a agregar el listener del evento o usar un evento delegado a partir de #login-form
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 23/12/2012, 12:46
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: [Problema] Ajax funciona solo una vez

Gracias por la respuesta.
Respecto a las soluciones, como vendría a quedar el codigo agregando el listener del evento de nuevo, porque no se bien cual listener, ni donde. GRACIAS.
__________________
Blog de Informatíca y Tecnología ;)
  #4 (permalink)  
Antiguo 23/12/2012, 16:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: [Problema] Ajax funciona solo una vez

El listener del evento click, ese que agregas con submit.click(function() { ... })
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 23/12/2012, 22:02
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: [Problema] Ajax funciona solo una vez

EDIT: GRACIAS. Logre solucionarlo!
__________________
Blog de Informatíca y Tecnología ;)

Última edición por elfeme; 23/12/2012 a las 23:55

Etiquetas: ajax, javascript
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 12:41.