Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2006, 03:19
Avatar de abe_k
abe_k
 
Fecha de Ingreso: diciembre-2004
Mensajes: 286
Antigüedad: 20 años
Puntos: 2
Objeto XmlHttpRequest

Este post es informativo, ya que hace un par de dias me paso una cosa curiosa.

Estuve mirando algun ejemplo para realizar una descarga de contenidos via AJAX. Esta tenia que descargar unos contenidos a un web principal (lo pasava por POST). Inicialmente se descargava los contenidos del menu home a partir de la funcion implementada y, cuando clicko un menu diferente, llamo a la misma funcion pero para descargar otro tipo de contenido (el correspondiente al menú clickado). Tuve problemas-> cuando se ejecutava por primera vez la funcion AJAX, esta tiraba correctamente pero parava la ejecucion del resto de código javascript que tengo, que es mucho. Despues de probar y probar encontre la solucion, quite la llamada .send(null) que, segun he leido por este foro, es obligatorio de poner, si no , el servidor no te devuelve la llamada creada. Pues bien, quite esta linea de código y cual fue mi sorpresa que, se descargava todo el contenido que pedia y mi código js me seguia ejecutando hasta el final. Aqui teneis el código:

Código:
function objetus() { 
   var objetus; 

        try { 
                objetus = new ActiveXObject("Msxml2.XMLHTTP"); 
        } catch (e) { 
                try { 
                        objetus= new ActiveXObject("Microsoft.XMLHTTP"); 
                } catch (E) { 
                        objetus= false; 
                } 
        } 
        if (!objetus && typeof XMLHttpRequest!='undefined') { 
                objetus = new XMLHttpRequest(); 
        } 
        return objetus; 
}  

function menu_ajax(adresa, menuId, menu)
{   
	document.getElementById("loading").style.visibility='visible';
	document.getElementById("loading").innerHTML = menu+"<br>Carregant...";
	_objetus=objetus(); //crear objeto
	url=adresa+"?al=1"; //URL
	_objetus.open("POST",url,true); //abrir procesador
    _objetus.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //cabeceras POST
	_objetus.setRequestHeader('Content-Type','text/html; charset=iso-8859-1');
    _objetus.send('&al=1' ); //enviar variables
    _objetus.onreadystatechange=function() { //funcion controlador
		if(_objetus.readyState==4)
		{
			if(_objetus.status==200)
			{
				document.getElementById(menuId).innerHTML = _objetus.responseText;
				document.getElementById("loading").style.visibility='hidden';
				document.getElementById("loading").innerHTML = "";
			}
		}
	} 
//_objetus.send(null);
}
Ante esto, alguien puede explicarme pq se decia que es obligatorio este método cuando, por experiencia mia se ha demostrado que no???
__________________
abe_k

Si quieres visitar Andorra, consulta la guia de este pequeño pais y conseguiras toda la información que necesites. La guia del visitante en Andorra