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???