Foros del Web » Programando para Internet » Jquery »

Tener que pulsar dos veces para recibir datos AJAX jquery

Estas en el tema de Tener que pulsar dos veces para recibir datos AJAX jquery en el foro de Jquery en Foros del Web. Hola, Tengo esta función que funciona bien, sólo que debo pulsar dos veces sobre el botón para que cargue rellene el DIV con los datos ...
  #1 (permalink)  
Antiguo 13/07/2010, 06:05
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Tener que pulsar dos veces para recibir datos AJAX jquery

Hola,

Tengo esta función que funciona bien, sólo que debo pulsar dos veces sobre el botón para que cargue rellene el DIV con los datos recuperados.

También como el evento se dispara con los botones de clase "boton_ajax", si pulsas en uno y luego en otro sale el resultado del primer botón.

Alguién sabe por qué?

Código HTML:
<div class="busqueda_videos">
<table class="tabla_edicion">
<tr>
<td>Buscar mismo en <input class="boton_ajax" type="submit" value="Youtube" name="6"></input></td>
<td><input class="boton_ajax" type="submit" value="Mostrar" name="6"></input> discotecas vinculadas</td>
</tr>
</table>
</div>
					
<div class="resultado_busqueda_videos"></div> 
Código PHP:
//Si pulsamos un botón que cargue datos con AJAX y el script cargarDatos.php
    
$(".boton_ajax").click(function(e){
        $.
ajax({
            
type"POST",
            
url"cargarDatos.php",
            
data"tipo="+$(this).attr("value")+"&id="+$(this).attr("name"),
            
success: function(datos){
                
resultado datos;
            }
        });
        $(
"[name="+$(this).attr("name")+"] > .resultado_busqueda_videos").html(resultado);
        $(
"[name="+$(this).attr("name")+"] > .resultado_busqueda_videos").css("border""3px solid #232651");
    }); 

Última edición por cluster28; 13/07/2010 a las 06:13 Razón: Corrección erratas
  #2 (permalink)  
Antiguo 13/07/2010, 08:28
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Tener que pulsar dos veces para recibir datos AJAX jquery

pasa que la primera vez la variable "resultado" no va a estar definida porque la llamada ajax es asíncrona entonces no espera a recibir respuesta y continua, al llegar a la variable "resultado" no va a tener nada, si te fijas en la consola de firefox vas a ver

lo que tenes que haces es mostrar los resultados en la funcion de callback

Código Javascript:
Ver original
  1. success: function(datos){
  2.      resultado = datos;
  3.      $("[name="+$(this).attr("name")+"] > .resultado_busqueda_videos").html(resultado);
  4.      $("[name="+$(this).attr("name")+"] > .resultado_busqueda_videos").css("border", "3px solid #232651");
  5.  
  6.             }

en vez de asignar datos a resultados usa la variable datos nomas
  #3 (permalink)  
Antiguo 13/07/2010, 12:11
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Tener que pulsar dos veces para recibir datos AJAX jquery

Ya intenté ponerlo de esa manera pero dentro de esa función "[name="+$(this).attr("name")+"] > .resultado_busqueda_videos" está indefinida. Cómo que no se ha pasado a la función su valor.

Si añadimos un alert:

Código PHP:
resultado datos;
$(
"[name="+$(this).attr("name")+"] > .resultado_busqueda_videos").html(resultado);
$(
"[name="+$(this).attr("name")+"] > .resultado_busqueda_videos").css("border""3px solid #232651");
alert("[name="+$(this).attr("name")+"] > .resultado_busqueda_videos"); 
El resultado es "[name=undefined] > .resultado_busqueda_videos".

A lo mejor se podría pasar el valor o la referencia del objeto pulsado, no?
  #4 (permalink)  
Antiguo 13/07/2010, 13:19
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Tener que pulsar dos veces para recibir datos AJAX jquery

claro, guardalo antes de ajax
el = $("[name="+$(this).attr("name")+"] > .resultado_busqueda_videos");

y despues hace

el.html(datos);
  #5 (permalink)  
Antiguo 14/07/2010, 00:52
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Tener que pulsar dos veces para recibir datos AJAX jquery

Así funciona bien.

Muchas gracias.

Etiquetas: ajax, dos, pulsar, recibir
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 00:37.