elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Parametro de funcion load() Ajax no ejecuta bien
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Parametro de funcion load() Ajax no ejecuta bien  (Leído 3,138 veces)
Lupin

Desconectado Desconectado

Mensajes: 153



Ver Perfil
Parametro de funcion load() Ajax no ejecuta bien
« en: 20 Abril 2013, 01:53 am »

Hola camaradas
Resulta que tengo un div en este caso "cargando" y quiero que se cargue recien cuando llega la respuesta desde carga_filtrada.php y luego usar esos datos para por ejemplo sacar un mensaje cualquiera, supuestamente el tercer argumento de load() puede ser una funcion que se ejecuta luego que load() ha cargado, pero el asunto es que la funcion que he llamado "aviso()" se ejecuta antes de que los datos esten en el div "cargando"  cuando primero debe esperar que se cargue y luego ejecutarse...espero que me puedan echar una mano ::)
Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin título</title>
  6. <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script>  
  7.  
  8.  
  9. <script type="text/javascript">
  10.  
  11. $(document).ready(function() {
  12.  // Enable hover effect on the style switcher buttons.
  13.  $('#switcher .button').hover(function() {
  14.    $(this).addClass('hover');
  15.  }, function() {
  16.    $(this).removeClass('hover');
  17. });
  18. });
  19.  
  20. </script>
  21.  
  22.  
  23.  
  24. <script type="text/javascript">
  25. $(document).ready(function() {
  26. $("#cargando").click(function(event) {  
  27. $("#cargando").load("carga_filtrada.php",aviso());
  28. });
  29. });
  30.  
  31. function aviso(){
  32.  
  33. var valores = $("#cargando").tml();
  34. var msgleft = valores.substring(0, 1).trim()
  35. var msgright =valores.substring(1, 2).trim()
  36. alert(msgleft)
  37. if  (msgleft =='0')
  38.    {
  39. $("#switcher-default").removeClass('button');
  40. $("#switcher-default").addClass('desabilitado');
  41. alert("inicio deshabilitado valor:" + msgleft);
  42. }else{
  43. $("#switcher-default").removeClass('desabilitado');
  44.  
  45. alert("inicio habilitado valor: !!" + msgright);
  46. }
  47.  
  48. }
  49. </script>
  50.  
  51.  
  52. <style type="text/css">
  53.  
  54. #cargando {
  55.  float: left;
  56.  background-color: #ddc;
  57.  border: 1px solid #000;
  58.  margin: 10px;
  59.  padding: 10px;
  60.  font-size: .9em;
  61. }
  62. #switcher {
  63.  float: right;
  64.  background-color: #ddc;
  65.  border: 1px solid #000;
  66.  margin: 10px;
  67.  padding: 10px;
  68.  font-size: .9em;
  69. }
  70. #switcher .button {
  71.  width: 100px;
  72.  float: left;
  73.  text-align: center;
  74.  margin: 10px;
  75.  padding: 10px;
  76.  background-color: #fff;
  77.  border-top: 3px solid #888;
  78.  border-left: 3px solid #888;
  79.  border-bottom: 3px solid #444;
  80.  border-right: 3px solid #444;
  81. }
  82. #switcher .hover {
  83.  cursor: pointer;
  84.  background-color: #afa;
  85. }
  86.  
  87. .desabilitado {
  88.  cursor: pointer;
  89.  color:#dcdcdc;
  90.  
  91. }
  92.  
  93.  
  94.  
  95.  
  96. </style>
  97. </head>
  98.  
  99. <body>
  100.  
  101. <div id="switcher">
  102.        <h3>Style Switcher</h3>
  103.        <div class="button selected" id="switcher-default">
  104.          <b>Primero</b>
  105.        </div>
  106.        <div class="button" id="switcher-narrow">
  107.          <b>Anterior</b>
  108.        </div>
  109.        <div class="button" id="switcher-large">
  110.          <b>Comentarios</b>
  111.        </div>
  112.        <div class="button" id="switcher-large">
  113.          <b>Siguiente</b>
  114.        </div>
  115.        <div class="button" id="switcher-large">
  116.  <b>Final</b>
  117.        </div>
  118. </div>
  119.  
  120. <div id="cargando">
  121. Cargando      
  122. </div>
  123. </body>
  124. </html>
  125.  
  126.  


En línea

Lupin

Desconectado Desconectado

Mensajes: 153



Ver Perfil
Re: Parametro de funcion load() Ajax no ejecuta bien
« Respuesta #1 en: 20 Abril 2013, 15:37 pm »

¿ alguien puede darme alguna sugerencia ?


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Parametro de funcion load() Ajax no ejecuta bien
« Respuesta #2 en: 20 Abril 2013, 17:14 pm »

Hola,

Documentación:
Callback Function
If a "complete" callback is provided, it is executed after post-processing and HTML insertion has been performed. The callback is fired once for each element in the jQuery collection, and this is set to each DOM element in turn.
Código
  1. $('#result').load('ajax/test.html', function() {
  2.   alert('Load was performed.');
  3. });
In the two examples above, if the current document does not contain an element with an ID of "result," the .load() method is not executed.

Básicamente te dice que si añades un callback (function), se ejecutara una vez termine de cargarlo todo.

Código
  1. $("#cargando").load("carga_filtrada.php",function(){
  2.   aviso();
  3. });

Saludos
En línea

Lupin

Desconectado Desconectado

Mensajes: 153



Ver Perfil
Re: Parametro de funcion load() Ajax no ejecuta bien
« Respuesta #3 en: 20 Abril 2013, 18:14 pm »

Gracias por la respuesta amigo.
Pero segun lo que me has documentado no entiendo por que el callback ("aviso()")se dispara sin que los datos hayan llegado al div especificado y envez de recuperar la data entrante recupera un dato que ya estaba alli predeterminadamente
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Parametro de funcion load() Ajax no ejecuta bien
« Respuesta #4 en: 20 Abril 2013, 18:25 pm »

Jquery entiende como callback una función anónima (tal y como te lo he mostrado). Osease, espera que la función se declare dentro del propio callback no que ya este definida. Como lo tenias/tienes tu, la función se dispara nada mas se haga el request sin esperar a que haya completado o devuelto nada.

Tienes mas info aquí: http://www.w3schools.com/jquery/jquery_callback.asp

PD: tambien tienes un error en la linea 33.
Código
  1. var valores = $("#cargando").tml();

es
Código
  1. var valores = $("#cargando").html();

Saludos
En línea

Lupin

Desconectado Desconectado

Mensajes: 153



Ver Perfil
Re: Parametro de funcion load() Ajax no ejecuta bien
« Respuesta #5 en: 20 Abril 2013, 19:11 pm »

Genial amigo tenias razon !!
Mi error fue declarar la funcion fuera del Callback , yo estaba dandome vueltas al asunto ;) incluso estaba pensando hace una espera de 3 segundos dentro de la funcion aviso() pensando que los datos solo se estaban demorando o que el Alert era demasiado rapido.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Compila bien, pero no ejecuta !! Solucionado
Java
Vingilot 4 3,985 Último mensaje 8 Enero 2008, 15:20 pm
por Vingilot
LOGIN EN PHP AJAX Y MYSQL NO ME EJECUTA EL INDEX.PHP (SOLUCIONADO) « 1 2 »
PHP
smagno 13 8,898 Último mensaje 20 Octubre 2009, 20:06 pm
por Mr. Crowley
por qué no me funciona la función load() de jquery-ajax « 1 2 »
Desarrollo Web
jhonatanAsm 16 19,822 Último mensaje 9 Noviembre 2012, 13:38 pm
por Imperius
[javascript] llamar a funcion que se recibe por parametro de la funcion
Desarrollo Web
Graphixx 0 5,633 Último mensaje 24 Abril 2012, 19:36 pm
por Graphixx
Ajax request no se me ejecuta en el orden correcto.
Desarrollo Web
CryNoF 6 3,521 Último mensaje 14 Noviembre 2017, 15:38 pm
por CryNoF
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines