Foros del Web » Programando para Internet » Javascript »

Recargar codigo JavaScript en respuesta AJAX

Estas en el tema de Recargar codigo JavaScript en respuesta AJAX en el foro de Javascript en Foros del Web. Hola a todos. Tengo una funcion que me muestra un calendario en un campo de texto cuando tengo el foco sobre dicho campo. Esta funcion ...
  #1 (permalink)  
Antiguo 07/09/2008, 16:35
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 4 meses
Puntos: 0
Recargar codigo JavaScript en respuesta AJAX

Hola a todos. Tengo una funcion que me muestra un calendario en un campo de texto cuando tengo el foco sobre dicho campo.

Esta funcion se llama con window.addEventListener o con window.attachEvent en el evento onload de la pagina.

El problema es que si recargo un DIV con AJAX, los campos de texto donde deberian aparecer los calendarios, y que me funcionan perfectamente la primera vez, ya no me los recarga, logicamente porque no hay evento onload por ningun sitio. ¿Sabeis si hay alguna forma de volver a ejecutar este javascript, una especie de evento "oncomplete" pero sin framework presente?

Muchas gracias.
  #2 (permalink)  
Antiguo 07/09/2008, 18:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Recargar codigo JavaScript en respuesta AJAX

Hola:

Debes usar el evento ajax onreadystatechange para las actualizaciones...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 08/09/2008, 00:47
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Recargar codigo JavaScript en respuesta AJAX

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Debes usar el evento ajax onreadystatechange para las actualizaciones...

Saludos
Si, es lo que uso. El problema es que laa respuesta la "escribo" con innerhtml, y no se recarga la pagina, con lo cual no se ejecuta el evento onload necesario para que funcione el script.

La pregunta es si puedo emular el comportamiento del onload del body en el momento que termine la ejecucion del script ajax.
  #4 (permalink)  
Antiguo 08/09/2008, 02:30
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Recargar codigo JavaScript en respuesta AJAX

Ya te han respondido tu pregunta: si usás ajax la página no se recarga, por lo tanto no se produce un evento onload tras cada petición. La única manera que tenés de reemplazar el dicho evento es reiterando la llamada a la función que ahora llamás con window.onload, con onreadystatechange:
Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
function $(id){return document.getElementById(id);}
function http(){
    if(window.XMLHttpRequest){
        return new XMLHttpRequest();    
    }else{
        try{
            return new ActiveXObject('Microsoft.XMLHTTP');
        }catch(e){
            alert('nop');
            return false;
        }    
    }
} 
function SetContainerHTML(id_contenedor,responseText){
    var mydiv = $(id_contenedor);
    mydiv.innerHTML = responseText
}
function cargarPagina(url,contenedorId){
var H=new http();
H.open('get',url+'?'+Math.random(),true);
H.onreadystatechange=function(){
    if(H.readyState==4){
        SetContainerHTML(contenedorId,H.responseText);
		window.onload();
        H.onreadystatechange=function(){};
		H.abort();
		H=null;
    }else{
        $(contenedorId).innerHTML='cargando...';
    }
}
H.send(null);
}
var contador=-1;
window.onload=function(){
    $('ll').innerHTML=++contador;
}
</script>  
</head>

<body>
<div id="pp"></div> 
<div id="ll"></div> 
<script>cargarPagina('pagina2.php','pp');</script>
<div onclick="cargarPagina('pagina2.php','pp');" style="border:1px outset #000; text-align:center; line-height:12px; width:100px; cursor:pointer; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:9px">repetir llamada</div>
</body>
</html>
  #5 (permalink)  
Antiguo 08/09/2008, 08:46
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Recargar codigo JavaScript en respuesta AJAX

Muchas gracias por la respuesta. Voy a probarlo.
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 19:37.