Comunidad de diseño web y desarrollo en internet online

Cargar diferentes páginas en distintos div: Ajax

Citar            
MensajeEscrito el 19 Jun 2006 06:56 pm
Siguiendo el tutorial (que me ha encantado :D), me di cuenta que el ritmo de la web se aceleraba. Para que os hagáis una idea, si tardase en cargar 3 segundos refrescándola, ahora tardaría 2. A eso se le llama rendimiento.

Bueno, al tema: me he preguntado si era posible cargar varias páginas en diferentes capas y he tocado un poco la función cargarContenido()

Código :

function cargarContenido(pagina,destino){
   var contenedor;
   
   contenedor = document.getElementById(destino);
   ajax = nuevoAjax();
   ajax.open("GET", pagina, true);
   ajax.onreadystatechange=function() {
      if (ajax.readyState==4) {
         contenedor.innerHTML = ajax.responseText;
      }
   }
   ajax.send(null);
}


Así tendría la posibilidad de, con una misma función, cargar diferentes páginas en diferentes div. Pero nada de eso, unos exploradores cargaban la misma web en todas las capas y otros cargaban solo la primera (o la última, no lo recuerdo ^^)

Así que manos a la obra he estado investigando (sí, también le he dado a la prueba y error xD) y he llegado a esta solución, espero que os sirva de ayuda y, si algo hago mal, me deis un toque para corregirlo

Código :

function nuevoAjax(xmlhttp){

   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 cargarContenido(pagina,destino){
   var contenedor;
   var ajax;
   
   contenedor = document.getElementById(destino);
   ajax = nuevoAjax(ajax);
   ajax.open("GET", pagina, true);
   ajax.onreadystatechange=function() {
      if (ajax.readyState==4) {
         contenedor.innerHTML = ajax.responseText;
      }
   }
   ajax.send(null);
}


Si alguien quiere, explico lo que he hecho. Un saludo

Por Namzug

3 de clabLevel



 

opera
Citar            
MensajeEscrito el 05 Jul 2007 05:46 pm
buenas,

no lo entiendo, porque de ajax basicamente no se nada, pero me gustaria saber como deberia llamar a la funcion en el codigo html para que en un <div> con id x se cargara la pagina x.

La verdad es que no se si es eso lo que venias explicando... :$

Yo tengo este codigo:


Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>

<head>
<script language="JavaScript">

function nuevoAjax(xmlhttp){

   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 cargarContenido(pagina,destino){
   var contenedor;
   var ajax;
   
   contenedor = document.getElementById(destino);
   ajax = nuevoAjax(ajax);
   ajax.open("GET", pagina, true);
   ajax.onreadystatechange=function() {
      if (ajax.readyState==4) {
         contenedor.innerHTML = ajax.responseText;
      }
   }
   ajax.send(null);
}
</SCRIPT>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
<meta name="description" content="description"/>
<meta name="keywords" content="keywords"/> 
<meta name="author" content="author"/> 
<link rel="stylesheet" type="text/css" href="default.css" media="screen"/>
<title>Indigo</title>
</head>

<body>

<div class="container">

   <div class="header">
      
      <div class="title">
         <h1>Indigo template</h1>
      </div>

      <div class="navigation">
         <a href="index.html">Vestibulum</a>
         <a href="index.html">Suspendisse</a>
         <a href="index.html">Elemen</a>
         <a href="index.html">Maecenas</a>
         <a href="index.html">Sodales</a>
         <div class="clearer"><span></span></div>
      </div>

   </div>

   <div class="main">
      
      <div class="content" id="contenido">


      </div>

      <div class="sidenav">

         <h1>Search</h1>
         <form action="index.html">
         <div>
            <input type="text" name="search" class="styled" /> <input type="submit" value="submit" class="button" />
         </div>
         </form>

         <h1>Something</h1>
         <ul>
            <li><a href="index.html">pellentesque</a></li>
            <li><a href="index.html">sociis natoque</a></li>
            <li><a href="index.html">convallis</a></li>
         </ul>

         <h1>Another thing</h1>
         <ul>
            <li><a href="index.html">consequat molestie</a></li>
            <li><a href="index.html">sem justo</a></li>
            <li><a href="index.html">semper</a></li>
         </ul>

         <h1>Third and last</h1>
         <ul>
            <li><a href="index.html">sociis natoque</a></li>
            <li><a href="index.html">magna sed purus</a></li>
            <li><a href="index.html">tincidunt</a></li>
         </ul>

      </div>
   
      <div class="clearer"><span></span></div>

   </div>

</div>

<div class="footer">&copy; 2006 <a href="index.html">Website.com</a>. Valid <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> &amp; <a href="http://validator.w3.org/check?uri=referer">XHTML</a>. Template design by <a href="http://arcsin.se">Arcsin</a>
</div>

</body>

</html>



y quiero que, por ejemplo al clickar en <a href="index.html">Suspendisse</a> se abra index.html en la capa con id="contenido" .

entonces:

1. Esta bien ahi donde esta el codigo puesto de la funcion?
2. Hay que importar algo?
3. como hago eso en los links?

Gracias de antemano aunque no respondais!

Por digitall

6 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Feb 2009 08:26 pm
Muy bueno el script .. pero la verdad no se que pasa..... he hecho lo que tu especificas pero solamente me funciona en Mozilla Firefox pero en Internet explorer no me funciona..

Lo probe con IE 7 y sistema operativo Win Vista

alguna idea??

Por carlodem7

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Mar 2009 06:50 pm
Oye, ¡¡muy bueno!! ¿Es de tu cosecha? ¡Enhorabuena!. Pues...me has solucionado el problema que tenía. Gracias por compartirlo.

Por Almost_Chinese

15 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 26 Sep 2010 06:39 am
Hola esta muy bien el script, me carga la pagina dentro del div sin problemas, pero al momento de ejecutar un evento de esa pagina no lo realiza, porque???? por ejemplo llamar a un calendario por medio de button

Roberto Ruiz

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 17 Nov 2010 03:50 pm
A mi me pasa exactamene lo mismo, en el index tengo el div contenedor, y me carga perfecta la página, pero en la página que carga hay un calendario llamado por un botón, cuando quiero mostrar el calendario ya no me funciona, será algo del ajax, o el problema es cargar en el div? que se puede hacer?

Por mralejo1

9 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ene 2011 09:57 pm
El calendario lo mandan llamar con una funcion js?
si es asi el hecho de que no puedan visualizar el calendario es debido a que la respuesta de ajax trae solamente texto, no identifica lo que venga entre las etiquetas <script> </script> .

Si l o estan llamando atraves de el onclik o del onsubmit, me parece extraño q no funcione podrian poner la parte del codigo!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.