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

problema recarga página en div con Ajax

Estas en el tema de problema recarga página en div con Ajax en el foro de Frameworks JS en Foros del Web. hola, cuando arranca mi sitio web en index.html tengo un div id=cos, donde voy cargando las diferentes paginas php que tengo mediante una función ajax, ...
  #1 (permalink)  
Antiguo 13/06/2009, 21:38
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
problema recarga página en div con Ajax

hola,
cuando arranca mi sitio web en index.html tengo un div id=cos, donde voy cargando las diferentes paginas php que tengo mediante una función ajax, paginas(URL, div).
En una de las páginas muestro datos resultado de una select a mi bds mysql.
Pulsando un enlace de esta página a través de un popup actualizo los valores de esta página padre.
Es al cerrar este popup que refresca la página padre.
Lo hago con la siguiente sentencia:
<input type="submit" name="salir" value="Salir" onclick="opener.top.location.href='ver.php';self.c lose();">

consigo que se refresque la página padre (lo que busco) pero en toda la pantalla, y yo quiero que se cargue (encaje) dentro del div id='cos' que está en index.html como antes de llamar al popup.

Supongo que tendría que usa de nuevo la función que carga las páginas en Ajax en el div, desde el popup, algo asi:

echo'<input type="submit" name="salir" value="Salir" onclick="opener.top.document.getElementById(\'cos\ ').innerHTML="paginas(\'paginas/ver.php\', \'cos\')";self.close();">';

pero no hace nada. Estoy desperada, pues ya consulté en otros foros pero sin éxito.
alguien puede darme ideas?
Gracias.
gracias
  #2 (permalink)  
Antiguo 13/06/2009, 23:22
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: problema recarga página en div con Ajax

se me ocurre que hagas una funcion donde llame la página que contiene la información que quieres que se refresque y luego de cerrar el popup la llames, algo como ésto

Código PHP:
function refresca(id,pagina){
     
//código
     
ajax.open ('GET'paginatrue);
     
    if (
ajax.readyState == ){
          
document.getElementById (id).innerHTML ajax.responseText;
   }

luego al cerrar el popup llamar a la funcion indicando la página que quieres refrescar y el id donde quieres que esa información se cargue

refresca("contenido","paginaconcontenido.php");

<div id="contenido"></div>


saludos
  #3 (permalink)  
Antiguo 14/06/2009, 03:52
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: problema recarga página en div con Ajax

Hola y gracias por responder,

esto que sugieres ya lo había hecho. Había usado las funciones que cargan todas las páginas y que son estas:


function SetContainerHTML(id,html,processScripts)
{
mydiv = document.getElementById(id);
//alert('contenido de mydiv :'+mydiv);
mydiv.innerHTML = html;
if(processScripts!=false)
{
var elementos = mydiv.getElementsByTagName('script');
for(ii=0;ii<elementos.length;ii++) {
var elemento = elementos[ii];
nuevoScript = document.createElement('script');
nuevoScript.text = elemento.innerHTML;
nuevoScript.type = 'text/javascript';
if(elemento.src!=null && elemento.src.length>0)
{nuevoScript.src = elemento.src;}
elemento.parentNode.replaceChild(nuevoScript,eleme nto);
}
}
}


function paginas(url, id_contenedor){
var pagina_requerida;
if(window.XMLHttpRequest) { // no es IE
pagina_requerida = new XMLHttpRequest();
} else { // Es IE o no tiene el objeto
try {
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert('El navegador utilizado no esta soportado');
}
}

pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor);
}
pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
pagina_requerida.send(null)

}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml






function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 ))
{SetContainerHTML(id_contenedor, pagina_requerida.responseText, 1);
}
}



Entonces en el popup ponía después de hacer el UPDATE, para salir y cerrarlo:

echo'<input type="submit" name="salir" value="Salir" onclick="javascript:paginas(\'paginas/ver.php\', \'cos\')";self.close();">';

Y no hace nada
  #4 (permalink)  
Antiguo 14/06/2009, 14:43
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: problema recarga página en div con Ajax

Cambié tu código por una función más practica, lo probé y está funcionando, ahora nada más tienes que cambiar los parametros y estaría funcionando

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<
title>aJax</title>
<
script language="javascript" type="text/javascript">
function 
objetoAjax(){
  var 
xmlhttp=false;

  try {
          
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (
e) {
      try {
          
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (
E) {
          
xmlhttp false;
      }

  }

  if (!
xmlhttp && typeof XMLHttpRequest!='undefined') {
      
xmlhttp = new XMLHttpRequest();
  }
  return 
xmlhttp;
}

function 
paginas(urldiv){

ajax=objetoAjax();
  
ajax.open("GET"url);
  
ajax.onreadystatechange=function() {
      if (
ajax.readyState==4) {
          
document.getElementById(div).innerHTML ajax.responseText;
      }
  }
  
ajax.send(null)
}
</script>
</head>
<body>
<div id="cos" style="width:200px; height:200px;"></div>
<input type="submit" name="Salir" value="Salir" onclick="javascript:paginas('paginas/ver.php', 'cos'); self.close();">
</body>
</html> 

Saludos
  #5 (permalink)  
Antiguo 14/06/2009, 16:33
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: problema recarga página en div con Ajax

Hola gepd,
desgraciadamente lo probé y sólo cierra el popup, pero no actualiza el padre.
He puesto unos chivatos en el código y no entra por el
if (ajax.readyState==4) {
Estoy a cero con Ajax, pero me parece que eso quiere decir que no tiene todos los datos que le hemos pasado ?
De todas formas quizá no lo puse en el lugar adecuado.

Resumiendo,
desde la página padre.php (cargada en <div id=cos> el cual físicament está en index.html ) abro popup.php para actualizar datos d padre.php al cerrar el popup.php.
He incluido las funciones en popup.php y la llamada la he puesto en el onclick del boton cerrar tambien del popup.php

Se te ocurre una alternativa a lo que quiero hacer?
llevo varios dias con este problema y no le veo salida. Es lo último que me falta para acabar el web. Te agradecería alguna sugerencia más.
gracias
  #6 (permalink)  
Antiguo 15/06/2009, 05:49
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: problema recarga página en div con Ajax

es urgente!! por favor , alguien me puede echar una mano?
gracias
  #7 (permalink)  
Antiguo 15/06/2009, 06:37
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: problema recarga página en div con Ajax

Código PHP:
onclick=”window.opener.location.paginas('pagina.php','cos'); window.close();” 
prueba cambiando eso, no se si resultará.
avisame si es no para buscar otras soluciones

SALUDOS
  #8 (permalink)  
Antiguo 15/06/2009, 06:42
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: problema recarga página en div con Ajax

ok, en cuanto llegue a casa lo pruebo (un par de horas)
un millon de gracias gepd!
  #9 (permalink)  
Antiguo 15/06/2009, 08:55
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: problema recarga página en div con Ajax

Bueeeeeeeeeeno,
parece que por fín!
Estaba encabezonada con usar las propiedades y métodos del objeto window.
Probé con tú última idea y tampoco y al final me fui a lo simple.
En el popup sólo dejé (después de actualizar)
echo'<input type="submit" name="Sortir" value="Sortir" onclick="window.close();">';
Y en el padre coloqué un boton REFRESCAR, que llama a la función de cargar páginas Ajax:
<input type="submit" name="refrescar" Value="Refrescar" onclick="javascript:paginas(\'paginas/ver.php\', \'cos\')"/>

No es lo que pensaba inicialmente, porque quería hacerlo todo en un click (al salir del popup, cerrar y refrescar el padre), pero lo hago en dos.

Muchas gracias por tu tiempo gepd
Saludos
  #10 (permalink)  
Antiguo 15/06/2009, 10:55
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: problema recarga página en div con Ajax

por si te intereza puedes probar con:

Código PHP:
onclick=”window.opener.paginas('pagina.php','cos'); window.close();” 
leyendo un poco encontré soluciones similares, creo que me había equivocado al incluir el parametro location.

si no resulta y prefieres quedarte con lo que has conseguido está bien :D


Saludos y de nada.
  #11 (permalink)  
Antiguo 15/06/2009, 16:26
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: problema recarga página en div con Ajax

Hola,
lo probé pero no refresca el padre.
bueno, me quedo con el plan B.
;)
Saludos
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 09:41.