Warning: Call-time pass-by-reference has been deprecated in /home/docecosas/segfault.docecosas.com/batidora/wp-content/plugins/delicious-integrator/delicious.php on line 108
Bien batido y revuelto : Blog Archive : Rasmus explica AJAX en 30 segundos

Rasmus explica AJAX en 30 segundos

25 de Octubre 2005 a las 5:11 pm | En General, PHP, CSS+HTML+JavaScript

Hace un tiempo Rasmus Lerdorf, escribió un correo explicando sobre AJAX, aquí va una traducción al vuelo.

Creo que mucho de todo eso de AJAX es un poco exagerado. Mucha gente ha estado utilizando cosas parecidas
desde mucho antes que se llamase “AJAX“, y realmente tampoco es tan complicado como mucha gente lo hace parecer.

Aquí hay un pequeño ejemplo de una de mis aplicaciones. Primero el JavaScript:

function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}

var HTTP = createRequestObject(); function sndReq(action) {
HTTP.open(’get’, ‘RPC.php?action=’+action);
HTTP.onreadystatechange = handleResponse;
HTTP.send(null);
} function handleResponse() {
if(HTTP.readyState == 4){
var response = HTTP.responseText;
var update = new Array();

if(response.indexOf(’|’ != -1)) {
update = response.split(’|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
} Con este código creamos un objecto Request además de una petición de envío y una función que gestione
la respuesta. Si quieres usarlo añades este JavaScript a tu página. Después para usarlo tan sólo necesitas
enlazarlo a algo, como por ejemplo a un evento onclick o directamente en un href como este: [foo] Así cuando alguien haga click en ese enlace lo que realmente pasará es que se generará una petición a
RPC.php?action=foo que se ejecutará en el servidor. En RPC.php puedes tener algo como esto: switch($_REQUEST['action']) {
case 'foo':
/* do something */
echo "foo|foo done";
break;
...
}

Ahora, miremos a la función handleResponse. Analiza la cadena “foo|foo done” y la separa a partir del carácter
‘|’. Entonces utiliza lo que va antes de ‘|’ como el identificador del elemento DOM de la página y lo que va después
será el nuevo innerHTML del elemento que hemos referenciado. Esto significa que si tenemos una etiqueta div como esta:

Cuando hagas click en el enlace que escribimos antes se transformará en:


foo done

Y eso es todo. Todo lo demás es construir sobre esto. Sustituir la sintáxis de la respuesta “id|texto” con un formato XML mucho
más rico y haciendolo más complejo. Antes de que empieces a utilizar grandes librerías “AJAX” prueba a crear tu propia funcionalidad, así
sabrás como funciona exactamente y será tan complicado como necesites. Muy a menudo descubrirás que no es necesario muho más
de lo que he explicado aquí.

Se puede ampliar esta solución para enviar varios parámetros en la solicitud, por ejemplo, lo que sería muy sencillo. Algo así como:

function sndReqArg(action,arg) {
HTTP.open(’get’, ‘RPC.php?action=’+action+’&arg=’+arg);
HTTP.onreadystatechange = handleResponse;
HTTP.send(null);
}

Y la función handleResponse que escribas puede hacer cosas mucho más interesantes que simplemente sustituir el contenido de un div.

-Rasmus

No Comments yet »

Suscripción RSS a los comentarios de la entrada. URI para TrackBack.

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^