Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   Manipular XML con handler externo... (http://www.forosdelweb.com/f127/manipular-xml-con-handler-externo-555250/)

Bellenger 07/02/2008 09:39

Manipular XML con handler externo...
 
hola a todos tengo la siguiente funcion que realiza una peticion ajax:
Código:

function procesa(url,valores,metodo,estado,cont,rsp,handler_externo){
        var metodo=metodo.toLowerCase();
        var rpta=parseInt(rsp);
        var cont=document.getElementById(cont);
        var url=(metodo=='post')?url:url+'?'+valores;
        ajax.open(metodo,url,estado);
  if(rpta==0){
          ajax.onreadystatechange=function(){
            if(ajax.readyState==4){
                          if(ajax.status==200){ajax.responseText;}else{cont.innerHTML='Cargando...';}
            }
    }
        }else{
    ajax.onreadystatechange=handler_externo;
  }
        metodo=='post'?ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'):'';
        ajax.send(metodo=='post'?valores:null);
}

queria saber si es posible manipular el resultado devuelto por el servidor, con una funcion externa... se podra...???:neurotico
Gracias de Antemano...:patada:

GatorV 07/02/2008 10:38

Re: Manipular XML con handler externo...
 
A que te refieres con una funcion externa?

Saludos.

Bellenger 07/02/2008 11:17

Re: Manipular XML con handler externo...
 
Gracias por la respuesta.
Bueno basicamente cuando manejamos una respuesta XML, tenemos que adicionar codigo extra para manejar dicho xml, y generalmente este codigo extra se coloca:
Código PHP:

     ajax.onreadystatechange=function(){
        if(
ajax.readyState==4){
          if(
ajax.status==200){
             var 
doc=ajax.response.XML;
              
/**********/
                    
aqui el codigo para manipular el xml
              
/**********/
          
}
     } 

como se ve, ese codigo extra cambia la anatomia de la funcion mostrada anteriormente. puesto que se debera agregar codigo para menejar directamente el objeto que recibira la respuesta. Por eso la idea de asignar un manejador externo :
Código PHP:

    ajax.onreadystatechange=handler_externo

cuando la respuesta sea un xml, este manejador externo basicamente trataria la informacion segun definicion del usuario. Espero haberme hecho entender y gracias nuevamente por la respuesta:si:

GatorV 07/02/2008 11:37

Re: Manipular XML con handler externo...
 
Es totalmente posible hacer lo que pides, trata de hacerlo y veras que el onreadystatechange dispara tu función que hayas definido anteriormente.

Aunque en lo particular te recomendaría que hicieras algo asi:
Código:

ajax.onreadystatechange = function() {
    if(ajax.readyState==4){
          if(ajax.status==200){
            var doc=ajax.response.XML;
                mi_funcion_handler( doc );
          }
    } 
}

Así tu función solo recibe un parámetro que es el XML listo para ser procesado.

Saludos.

Bellenger 07/02/2008 12:56

Re: Manipular XML con handler externo...
 
Gracias, lo acabo de hacer despues de xxxxx, intentos, ahora una consulta mas el detalle es que no es una sola funcion, veras el codigo :
Código:

ajax.onreadystatechange = function() {
    if(ajax.readyState==4){
          if(ajax.status==200){
            var doc=ajax.response.XML;
                mi_funcion_handler( doc );
          }
    } 
}

pertenece a una funcion que generica que se encarga de realizar las peticiones, ahora, segun la peticion del usuario esta debera tratar distintos xml, cada xml tiene su handler que se encargara de manipularlo, la pregunta es como le paso este handler como parametro para que en la funcion de proceso, sea dispare el handler especifico para el xml solicitado.
Gracias por la respuesta.
Hace time, que no venia por los foros jaja tendre que venir mas seguido ahora que estoy de vagaciones...:si:

GatorV 07/02/2008 16:12

Re: Manipular XML con handler externo...
 
Pasale el parametro a tu funcion por decir, si se llama hazPeticionAJAX y dentro de ahi se llama, pasale el callback:
Código:

hazPeticionAJAX( '/path/archivo.xml', procesaXMLA );
function procesaXMLA( xml ) {
      // codigo para procesar
}

// luego en la firma de tu funcion de ajax pasas el callback:
function hazPeticionAJAX( url, cb ) {
      // init
      ajax.onreadystatechange = function() {
    if(ajax.readyState==4){
          if(ajax.status==200){
            var doc=ajax.response.XML;
                cb( doc );
          }
    } 
}
}

Saludos.

Bellenger 07/02/2008 19:57

Re: Manipular XML con handler externo...
 
Funciono de a pelos jaja, probando probando funciono todo, Se agradece a todos :si:


La zona horaria es GMT -6. Ahora son las 19:10.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.