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

Ejecutar javascript en recarga ajax

Estas en el tema de Ejecutar javascript en recarga ajax en el foro de Frameworks JS en Foros del Web. Resulta que cuando recargo una vista mediante ajax no se ejecuta el código javascript que pueda haber en ella. Me explico. Tengo un código javascript ...
  #1 (permalink)  
Antiguo 21/01/2011, 13:51
 
Fecha de Ingreso: octubre-2008
Mensajes: 58
Antigüedad: 15 años, 6 meses
Puntos: 1
Ejecutar javascript en recarga ajax

Resulta que cuando recargo una vista mediante ajax no se ejecuta el código javascript que pueda haber en ella. Me explico.

Tengo un código javascript que carga un calendario mootools mediante el siguiente código:

Código HTML:
<script type="text/javascript">
	//<![CDATA[
		window.addEvent('domready', function() {
			myCal1 = new Calendar({ date: 'd/m/Y' }, { blocked: ['...']}); 
		});
	//]]>
</script> 
Cuando cargo la vista por primera vez el calendario se monta sin problemas, pero cuando vía ajax recargo sólo una parte de ésta (que incluye este código) lo ignora totalmente. He puesto un alert dentro de los tags <script> y salta en la primera carga pero no en la carga vía ajax-.

Otro dato que puedo aportar es que si una vez cargada la página modifico el código javascript, al recargarla no muestra este cambio.

Se me escapa si puede ser cache del navegador, de Apache o por donde pueden ir los tiros.

¿Alguna idea?

Por cierto, sé que debe haber maneras alternativas de hacer esto, empezando por no utilizar la llamada ajax, pero necesitaría una solución para estas condiciones.

Gracias por adelantado.

Última edición por Lamakun; 21/01/2011 a las 13:54 Razón: Titulo poco claro
  #2 (permalink)  
Antiguo 21/01/2011, 14:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Ejecutar javascript en recarga ajax

ejecutar javascript que viene de ajax
  #3 (permalink)  
Antiguo 21/01/2011, 14:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ejecutar javascript en recarga ajax

1-) AJAX no ejecuta ningún javascript, nterpreta el resultad en binaro, texto o XML, son fw u otras librerías como xajax lo que hacen eso

2-) si usas un iframe si puedes ejecutar ese codigo que indicas, es una forma de AJAX primitiva pero funcional, pero solo aplicaria al DOM del iframe, necesitarías hacer referencia al document.parent

3-) si la respuesta de servidor recibida por AJAX mediante responseText es codigo JS, puedes usar eval() (opción poco recomendable), pero sin los tags <script>, js puro, además si te fijas en tu código js anteror, intentas asignar de nuevo una función para cuando se cargue el DOM, y e ese momento e DOM esa cargado, por lo que tendrías que devolver la linea especifica:

myCal1 = new Calendar({ date: 'd/m/Y' }, { blocked: ['...']});

¿no te parece?

4-) apache es el servidor web, no actúa ni tiene nada que ver cuando entrega al cliente la respuesta, algo que podría afectarte en este caso es la caché del navegador, a cual debes de expirar cuando usas AJAX para evitar que con la caché no se envíen las peticiones AJAX, ejemplo en php:

Código PHP:
Ver original
  1. header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
  2. header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
  3. header( "Cache-Control: no-cache, must-revalidate" );
  4. header( "Pragma: no-cache" );
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 24/01/2011, 03:16
 
Fecha de Ingreso: octubre-2008
Mensajes: 58
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Ejecutar javascript en recarga ajax

Muchas gracias por vuestras respuestas, me resolvieron el problema!!!

Por mi parte tema cerrado.

Etiquetas: ajax, ejecutar, javascript, recarga
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 20:32.