<$BlogRSDUrl$>

28 febrero 2006

Error en la lección 3 

Como probablemente habréis notado, el ejemplo de la lección 3 no funciona. Bueno, no os funciona a vosotros. A mi si,pero creo que es debido a un fallo en una extensión del Firefox que tengo instalada: Firebug. Sirve para encontrar errores en el código y tiene una utilidad fantástica para seguir las peticiones del objeto XMLHttpRequest. Activando ésta opción es como funciona el ejemplo.
El problema viene dado porque parece ser que desde una web solo puedes pedir datos mediante XMLHttpRequest al servidor que te ha dado esa web. No se si se puede conseguir que funcione, lo intentaré y lo comentaré.
Disculpad el error que intentaré subsanar lo más pronto posible.

0 Comentarios
Enlaces a este envio:

27 febrero 2006

Ejemplos de AJAX 

Cosas como este ajedrez es lo que se puede hacer con AJAX.


Vía Ajaxian

0 Comentarios
Enlaces a este envio:

24 febrero 2006

Tutorial AJAX - Lección 3 - El Objeto XMLHttpRequest 

Ya hemos visto cosas que se pueden hacer con JavaScript, CSS y DOM (sólo unas pocas) pero aún no hemos visto nada de AJAX.
Recordemos el proposito de AJAX: Obtener datos (XML) desde el servidor sin tener que recargar toda la página (Asíncrono mediante JavaScript). Hoy vamos a aprender cómo hacerlo.

Antes de nada os pido una cosa: no os asustéis. El código va a ser un poco espeso, quizá, pero es el código. En próximas lecciones veremos como usar alguna librería para hacernos la vida mucho, mucho mas fácil.

También deciros que debido a las restricciones de blogger los scrits los he alojado en el nuevo hosting de google, así que os abrire unas ventanas nuevas en los ejemplo. Permitidlas o mejor, usad firefox (teneis el link de descarga en la columna de la izquierda) y abridlos en una pestaña nuevo con el botón central del ratón.

Entremos en harina:

Primero vamos a definir el comportamiento que esperamos. Va a ser deliberadamente simple para que se capte la idea.
vamos a tener una página con dos elementos: un botón y una capa con dimensiones establecidas y con borde, para que se vea quedará algo como ésto:


Lo que vamos a intentar es que nos salga en esa capa la página de google (un cachito).
Veamos el código:
<input onclick="leccion3_get_google()" value="Botón" type="button">
<div id="leccion3_capa1" style="width:300px;height:150px;border:black 1px solid;"></div>

Todo el meollo de la cuestión va a ir en la función leccion3_get_google() que irá definida en un fichero externo o en la cabecera del documento.
Os pego todo el código que está muy bien comentado:
// Aquí vamos a guardar nuestro objeto XMLHttpRequest. Lo declaramos global porque lo vamos a usar en más de una función como veréis.
var xmlhttp;

function leccion3_get_google()
{
// Hay que decir que el tratamiento del objeto XMLHttpRequest es distinto según que navegador usemos
// Por ello, primero lo intentamos crear para navegadors M$ y luego si no se ha creado lo crearemos para los demas navegadores
try {

xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

} catch (E) {

xmlhttp = false;

}

}
// Ahora compruebo si se ha creado para M$, si no lo creo
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {

try {

xmlhttp = new XMLHttpRequest();

} catch (e) {

xmlhttp = false;

}

}
// Creo que está bastante claro, lo único que puede confundiros es la gestión de las excepciones pero tambien es bastante clara. Si alguno no entiende que levante la mano ;)
// Ahora va la madre del cordero:

xmlhttp.open("GET", "http://www.google.com" , true);

// Lo explico un poco: La función open es la que abre la comunicación con el servidor.
// Tiene los siguientes parámetros:
// Tipo: Puede ser GET,POST o HEAD. Los dos primeros son obvios, el tercero nos devolverá solo la cabecera de un documento y nos puede servir, por ejemplo, para saber si se ha modificado desde una fecha
// url: Está bastante claro.
// asincrona: Es un valor boleano que indica si la ejecución del script se detiene hasta que lleguen datos o continua sin esperar
//
// Hemos hecho el envío de forma asincrona (no nos paramos a esperar respuesta) y ¿ahora qué?
// Ahora signamos una función para cuando recivamos datos:

xmlhttp.onreadystatechange = hayrespuesta;

// Y enviamos la petición. Como no queremos enviar datos (de momento) enviamos null. De lo contrario podrían ir incluidos datos de un formulario.

xmlhttp.send(null);
}

// Y ahora implementamos la función que se ejecuta cuando recivamos datos:

function hayrespuesta()
{
// Sabemos que algo ha cambiado en el objeto xmlhttprequest (onreadystatechange), pero nos tenemos que asegurar de que la petición ha tenido éxito (código 4)
if (xmlhttp.readyState == 4) {
// obtenemos el resultado del servidor
resultado = xmlhttp.responseText;
// y lo ponemos en la capa
document.getElementById("leccion3_capa1").innerHTML = resultado;
} else {
// por si quisiesemos ejecutar algo mientras se está cargando el resultado
}
}

No se ve muy bien, así que mejor veis el ejemplo y miráis el código fuente que está comentado.

0 Comentarios
Enlaces a este envio:

23 febrero 2006

Hosting de Google 

google nos vuelve a sorprender (bueno, no tanto) con un nuevo servicio (en pruebas, claro) de alojamiento.
Ofrecen 100M de alojamiento, creo que estático (no permite páginas php o de otro tipo)un bonito sistema para subir archivos, plantillas para hacer webs facilonas todo aderezado con el look google y web 2.0
Podeis ver como queda una web de plantilla aquí. De momento dejaré eso hasta que den soporte para algún script de servidor y, ya que pedimos, acceso a Base de Datos.

0 Comentarios
Enlaces a este envio:

Tutorial AJAX - Lección 2 - JavaScript, DOM, CSS 

JavaScript sabemos (espero) lo que es.
CSS sabemos (también lo espero) lo que es.
Y DOM, también lo sabemos. Y si no os diré que es un sistema para poder acceder a las propiedades de una página web y cambiarlas.
Con estas tres herramientas podemos hacer cosas como cambiar colores, mover elementos por la pantalla, crear juegos (ver más abajo el post de los lemmings). El límite está en vuestra imaginación.
Un ejemplo:
Este texto tiene de color de fondo rojo. Si pones el ratón encima se pondrá verde. Si lo sacas volverá al rojo.
Explicación del código:

<span style="background-color: rgb(255, 0, 0);" id="leccion2_texto1" onmouseover="this.style.background='#00ff00';" onmouseout="this.style.background='#ff0000';">Este texto tiene de color de fondo rojo. Si pones el ratón encima se pondrá verde. Si lo sacas volverá al rojo.
Vemos que le aplicamos un color de fondo (style="background-color: rgb(255, 0, 0);") (CSS)
Le damos un identificador (id="leccion2_texto1") (DOM)
Le añadimos dos eventos:
1.- onmouseover="this.style.background='#00ff00';" onmouseover = cuando pongas el ratón encima se ejecuta el código JavaScript. En este caso lo que hacemos es cambiar la propiedad background del estilo para ponerla a verde (#00ff00 en hexadecimal).
2.- onmouseout="this.style.background='#ff0000';" onmouseout = cuando el ratón salga del elemento. Lo que hacemos es poner de nuevo el fondo en rojo

Como veís se utiliza la propiedad this que se refiere siempre al elemento que contiene el código. En siguiente ejemplo veremos cómo se hace referencia a otros elementos:

Al pulsar sobre este texto desparecerá
Y al pulsar hacer doble click sobre éste volverá a a aparecer.

Explicación del código:

<span id="leccion2_texto2" onclick="this.style.visibility='hidden'">Al pulsar sobre este texto desparecerá</span>
<span ondblclick="document.getElementById('leccion2_texto2').style.visibility='visible'">Y al pulsar sobre éste volverá a a aparecer.</span>

Vemos que ahora hemos creado dos elementos:
<span id="leccion2_texto2" onclick="this.style.visibility='hidden'">Al pulsar sobre este texto desparecerá</span>
y
<span ondblclick="document.getElementById('leccion2_texto2').style.visibility='visible'">Y al pulsar hacer doble clicksobre éste volverá a a aparecer.</span>

El primero tiene identificador lección2_texto2(id="leccion2_texto2" y un evento onclick (cuando se pulse con el ratón) que lo que hace es poner la propiedad del estilo visibility (visibilidad) a hidden (oculto). No tiene misterio, ¿no?
El segundo elemento solo tiene un evento: ondblclick (cuando se haga doble-click con el ratón) y lo que hace es poner la propiedad visibility del elemento leccion2_texto2 a visible. Para acceder a ella usamos la función getelementById que nos permitirá tener acceso a las funciones y propiedades de cualquier elemento de una página web.


Espero que os haya servido esta lección para poneros al día de algunas cosas, aunque aún no hemos empezado con AJAX. Como siempre, espero vuestros comentarios para intentar hacerlo mejor.

1 Comentarios
Enlaces a este envio:

Otra tira 

Como podéis ver a la izquierda, el número de tiras que voy enlanzando aumenta.
Espero que os gusten

0 Comentarios
Enlaces a este envio:

Tutorial AJAX - Lección 1 - Introducción 

Ya estamos de chapa, ¿no? Pues si, un poco, pero solo la estrictamente necesaria. Si os parece que es mucha o que sobra algo no teneis más que decirlo.

Requisitos para poder seguir estas lecciones:
¿Los cumples? ¿No? Pasate por desarrollo web, donde tienen unos manuales buenisimos al respecto. En cualquier caso intentaré no avanzar muy deprisa, pero si así es hacedmelo saber.

¿Que es AJAX?

Es la pregunta del millón, para algunos, ¿no? AJAX son las siglas de:
Asincrono
Javascript
And
XML (que también son siglas :P)
Ha quedado claro ¿no? Ya me imagino que no. Voy a intentar explicarlo:

Para ello, primero pensemos en cómo es la programación tradicional web. El usuario pone una dirección o pincha en un enlace y el navegador recarga toda la página entera. Como mucho podemos localizar la recarga usando los horrorosos frames.
Pero ¿y si sólo queremos cargar una parte localizada de la página? Además de dar un aspecto más dinámico a la página reduciremos considerablemente el tiempo de carga de la misma.
Ésto, y mucho más, se puede hacer con AJAX.
Ésto, y mucho más, es lo que, espero, aprendamos a hacer con AJAX.
El mucho más será aprender a utilizar las capas y algunas librerías disponibles en el mercado para crear efectos asombrosos que perminan a nuestras páginas web rivalizar con las presentaciones en flash.
Manteneos conectados ;)


PD: Ayudad a mejorar éste mini-curso diciendome si os parece bien o si os parece mal. Gracias

1 Comentarios
Enlaces a este envio:

22 febrero 2006

Pequeña Introducción a AJAX 

En los próximos días voy a publicar una serie de post de lo poco que se sobre AJAX. Está dedicado a un par de ex-apañeras de facultad, pero puede participar con comentarios o correos electrónicos cualquiera. No dudéis en decirme como mejorarlo.

1 Comentarios
Enlaces a este envio:

19 febrero 2006

Web del día 


Lo flipas nen!!! NO se mueve!!!

0 Comentarios
Enlaces a este envio:

16 febrero 2006

Web del día (geek) 

Esta es solo para informáticos:
La Evolución de un Programador (en ingles)

0 Comentarios
Enlaces a este envio:

14 febrero 2006

Web de día 

A ver donde queda Windows Vista después de éstos dos últimos avances.





0 Comentarios
Enlaces a este envio:

Web de día 

El futuro de las pantallas?






0 Comentarios
Enlaces a este envio:

12 febrero 2006

Web del día: DHTML Lemmings 

En Linux Juegos nos cuentan que vuelve este clásico que desapareció, creo, que por problema con los derechos sobre el juego:
DHTML Lemmings

0 Comentarios
Enlaces a este envio:

10 febrero 2006

Web del día 

Primero os recomiendo la web entera: CPI (Curioso Pero Inutil)
Y ahora el artículo, como ayer de humor:
¿Era David el Gnomo 7 veces más fuerte que tú?

0 Comentarios
Enlaces a este envio:

09 febrero 2006

Web del día 

Ya se que probablemente no lo ponga todos los días... mi falta de constancia en nada. Pero intentaré todos los días poner un post con este título en el que os recomiende una página junto con las razones por las que lo hago. Hoy toca humor:
El caracol más rápido que el ADSL

0 Comentarios
Enlaces a este envio:

02 febrero 2006

¿Qué os gustaría ver por aquí? 

Últimamente me he centrado mucho en la crítica de libros y este blog nació con intención de ser mas tecnológico. ¿Os gustaría ver más noticias de tecnología? ¿Mini-manuales, trucos etc? Dejad vuestras impresiones

0 Comentarios
Enlaces a este envio:
Nedstat Basic - Estadisticas gratis