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:
Ante esto, alguien puede explicarme pq se decia que es obligatorio este método cuando, por experiencia mia se ha demostrado que no??? 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); }