Saludos... en mi recomendacion te sugiero usar:
1.- Una variable global para hacer consultas al servidor:
2.- Una funcion para inicializar dicha variable para usarla con Ajax:
Código:
function ini_xml()
{
p_http=null;
if(window.XMLHttpRequest)
return new XMLHttpRequest();
else if(window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP");
}
3.- Una funcion para hacer peticiones:
Código:
function request(url,p,send){
p_http=ini_xml();
if(p_http)
{switch(p)
{
case 1: p_http.onreadystatechange = funcion_de_respuesta_1; break;
case 2: p_http.onreadystatechange = funcion_de_respuesta_2; break;
case 3: p_http.onreadystatechange = funcion_de_respuesta_3; break;
case 4: p_http.onreadystatechange = funcion_de_respuesta_4; break;
case 5: p_http.onreadystatechange = funcion_de_respuesta_5; break;
}
p_http.open("POST",url,true);
p_http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
p_http.send(send);
}
}
Ok, hasta aqui, tienes ya armada toda la estructura para solicitar informacion a un servidor en formato XML... ahora solo tienes que armas las funciones que requieres, es decir, una funcion que le indique a la funcion "request" tres cosas => ¿Que quieres? ¿Como lo quieres? ¿Como lo sirvo Señor?
El parametro URL le indica a la funcion a donde debe hacer la solicitud (Que quieres?)
El parametro send es que variables le enviaras al servidor (Como lo quieres?)
El parametro p es decirle que ejecute una funcion especifica al recibir la respuesta (Como lo sirvo Señor?)
Asi que...
4.- Funcion que haga la solicitud...
Código:
function traiga_mi_comida(x)
{
request("traiga_mi_comida.php",3,"comida="+x);
}
En este caso... le he solicitado al servidor (de comida XD) que valla a "traiga_mi_comida" y me sirva con las instrucciones de la funcion 3, y que la comida sea segun mis especificaciones en x.
Ahora... solo falta decirle como es la funcion 3... (o cualquier otra que definas)
5.-
Código:
function funcion_de_respuesta_3(){if(rev_est())
{
resultado = p_http.responseXML.getElementByTagName("comida").firschild.nodeValue;
alert("Su comida Señor =>"+resultado);
}}
Y listo... me ha servido la comida...
Por si no lo notas... tambien incluyo una funcion "rev_est()"... esto es... revisar el estado en que se encuentra la solicitud al servidor... hay 5 estados... (del 0 al 4) digamoslo asi:
0.- Me tomaron la orden.
1.- Entregaron la Orden al Chef
2.- El Chef esta preparando ... mmm....
3.- El chef termino... viene enseguida
4.- Ya está en mi mesa... A comer !!!
Como no puedo disponer de la informacion (y mi comida) hasta que me la sirvan, es importante que verifique si ya está, antes de comermela :P
Para eso:
Código:
var READY=4;
function rev_est(){if(p_http.readyState == READY && p_http.status == 200)return true;else return false;}
Esta funcion tambien revisa que la informacion (nuestra comida) se halla entregado correctamente... (.status == 200) y que el servidor no cometio errores... (no queremos morir envenedados o si ??)
Aplicado a tu lector RSS (y no a la comida)... solo tienes que definir tu funcion de solicitus y tu funcion de respuesta.
Código:
function traer_xml()
{
request("mi_xml.php",5,"noticias=deportes");
}
function funcion_de_respuesta_5()
{
resultado = p_http.responseXML;
..... y de qui en adelante lo que desees hacer con el...
}
De igual forma podrias cargar XML estaticos sin no se crean con PHP o ASP o etc... de forma dinamica... solo altera un poco la funcion request a como la necesites...
Y Buen provecho !!!