Rasmus explica AJAX en 30 segundos
25 de Octubre 2005 a las 5:11 pm | En General, PHP, CSS+HTML+JavaScriptHace 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:
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
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^