Buscar

Sigue este blog mediante RSS
 

Empezando con Ajax

Por razones del trabajo he tenido que empezar a usar Ajax, antes había hecho algunas cosillas así que he tirado de lo que tenía por ahí.

En concreto se trata de una función a la que pasándole una capa y una dirección url (html, php, jsp, servlet…) carga la página en dicha capa.

function paginas (url, id_contenedor)
{
var pagina_requerida = false;
if (window.XMLHttpRequest)
{
// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest ();
} else if (window.ActiveXObject)
{
// pero si es IE
try
{
pagina_requerida = new ActiveXObject (”Msxml2.XMLHTTP”);
}
catch (e)
{
// en caso que sea una versión antigua
try
{
pagina_requerida = new ActiveXObject (”Microsoft.XMLHTTP”);
}
catch (e)
{
}
}
}
else
return false;
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);
}

Si todo ha funcionado correctamente entonces cargaremos el contenido en la capa correspondiente

function cargarpagina (pagina_requerida, id_contenedor)
{
if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf (”http”) == - 1))
document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;
}

Me encantaría poder decir de donde obtuve estas funciones, pero no sé el autor ni el tipo de licencia que tienen, pero vamos, que tampoco tienen mucho, cualquiera con mínimos conocimientos de ajax podría hacerlas e incluso mejorarlas ya que son muy básicas.

Las podemos incluir en un fichero javascript externo o integrarlas en nuestro código, de cualquier manera para poder invocar la función sería desde cualquier evento con la sintaxis:

paginas(’url’,'capa_destino’)

Donde la url puede ser tanto absoluta como relativa y la capa_destino ha de ser el id de alguna capa, por ejemplo:

paginas(’prueba.html’,'cprueba’)

y tendríamos en nuestro código:

<div id=”cprueba”></div>

Luego cargaríamos la página prueba.html en la capa “codigo” ubicada mediante css en cualquier parte de nuestra página.

Para poder invocarla podemos usar eventos onChange o onLoad, por ejemplo, si queremos que nada más cargar la página aparezca algo podemos usar la propiedad onLoad del body:

<body onLoad=”paginas(’prueba.html’,'cprueba’)”>

Es conveniente cargar sólo páginas con texto y evitar transferir mediante Ajax funciones javascript ya que suelen dar muchos problemas y fallos.

Si se pretende llamar a un servlet y este redirige a un jsp, por ejemplo, también tendremos ese problema ya que se recargará toda la página y no sólo la capa.

En estos casos quizás sea mejor solución utilizar frames con la estructura de marco flotante

<iframe name = “nombre” width=”100%” height=”400″ frameborder=”0″>Texto alternativo</iframe>

Con el frameborder indicaremos si aparece el borde o si por el contrario queremos hacer transparente su presencia.

Para enviar enlaces al frame sólo necesitaremos utilizar el atributo target del enlace para indicar que frame (name), en este caso sería:

<a target= “nombre” href=”">Enlace</a>

Espero que os sirva para vuestros comienzos con Ajax.


Temas relacionados


 

6 Comentarios en “Empezando con Ajax”

  1. Autor
    1
      gafeman
     

    hola Emilio,

    te recomiendo que uses la libreria jquery para utilizarla tan solo tienes que descargarla en: http://jqueryjs.googlecode.com/files/jquery-1.2.1.min.js ocupa 45.3kb

    luego añadirla entre las etiquetas head:

    y todo el codigo de funciones que tienes lo podrias hacer con:

    function paginas(pagina_requerida, id_contenedor)
    {
    $.ajax({
    url: pagina_requerida,
    cache: false,
    success: function(html){
    $(’#'+id_contenedor).html(html);
    }
    });
    }



  2. Autor
    2
      emirodgar
     

    La verdad es que nunca he sido mucho de jquery o mootools, lo he usado en alguna ocasión pero para cosas sin importancia.

    He puesto esas dos funciones pero en realidad tiro de una libreria ajax mucho más extensa que conseguí en el curro que entre otras cosas me permite poder transferir formularios como objetos dom.

    Gracias por el consejo, seguramente tendré que empezar a usar alguna de esas librerias de forma asidua, ya que hacen todo el proceso mucho más sencillo ;)



  3.  

    [...] semana pasada escribía un artículo sobre los comienzos con ajax, en él indicaba una forma fácil para cargar un documento estático en cualquier capa de una [...]



  4. Autor
    4
      Crea menús CSS online | Emilio José Rodríguez García
     

    [...] programa, que mediante el uso de AJAX nos permite un fácil manejo, ofrece la posibilidad de crearnos un menú a la carta, podremos [...]



  5. Autor
    5
      Frames en HTML | Emilio José Rodríguez García
     

    [...] de usar Ajax era un fan de los frames, más concretamente del iframe. Creo que en algunos casos puede ser muy [...]



  6. Autor
    6
      Ofuscadores de código javascript | Emilio José Rodríguez García
     

    [...] que apareció AJAX el uso de Javascript se ha vuelto a disparar, pero ahora más que nunca, sobretodo para evitar [...]



Deja un comentario