Tratando de corregir unas funciones que habia escrito para manejo de Ajax me encontre con un problema para mi indescifrable...... un extraño comportamiento del "Inspect Element" tanto de Chrome como de Firefox.
Me dice primero que un objeto Ajax tiene status:0 y cuando lo inspecciono dice que tiene status:200
Por otro lado "copio" el objeto a otra variable (ob = aR) y cuando la miro dice algo completamente distinto!
Alguien entiende que esta pasando ? y por que tanto Chrome con Firefox observan este comportamiento ?
http://i1353.photobucket.com/albums/...psc8991cb4.png
Código Javascript:
Ver original
<html> <body> <form name="personal" action="../pruebas/ver_dump $_REQUEST.php" id="personal1"> Edad: <input type="text" id="edad" /> <br /> Peso: <input type="text" id="peso" /><br /> Sexo: <select id="sexo"> <option value="MASCULINO">M</option> <option value="FEMENINO">F</option> </select> </form> <div id="outputAjax">Resultados del lado del servidor</div> <script> var edad_el = document.getElementById('edad'), peso_el = document.getElementById('peso'), sexo_el = document.getElementById('sexo'), frm = document.getElementById('personal1'), outputAjax = document.getElementById('outputAjax'); onreadystatechangeHandler = function(aR) { ob = aR; if(ob.readyState == 4 && ob.status == 200 ){ console.log(ob.responseText); outputAjax.innerHTML = ob.responseText; }else{ console.log ('readyState: '+ob.readyState+' y status: '+ob.status); console.log (ob); } }; function ajaxRequestObjectBuilder() { var object; try{ // Opera 8.0+, Firefox, Safari object = new XMLHttpRequest(); } catch (e){ // Internet Explorer try{ object = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ object = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ alert("Error en Ajax"); return false; } } } return object; } function ajaxByGet() { var ajaxRequest = ajaxRequestObjectBuilder(); // registro funcion para Ajax ajaxRequest.onreadystatechange = onreadystatechangeHandler(ajaxRequest); //console.log(ajaxRequest); var edad = edad_el.value, peso = peso_el.value, sexo = sexo_el.value; var params = "?edad=" + edad + "&peso=" + peso + "&sexo=" + sexo; ajaxRequest.open("GET", frm.action + '?' + params, true); ajaxRequest.send(null); } // Registro cambios en elementos deel formulario: onChange document.getElementById('personal1').addEventListener("change", function (event) { var tagname = event.target.tagName; if (tagname == 'SELECT') { ajaxByGet(); } }); // Registro cambios en elementos deel formulario: onKeyup document.getElementById('personal1').addEventListener("keyup", function (event) { var tagname = event.target.tagName; if (tagname == 'INPUT' || tagname == 'TEXTAREA') { ajaxByGet(); } }); </script> </body> </html> </html>
y la parte que estaba debugueando es esta:
Código Javascript:
Ver original
onreadystatechangeHandler = function(aR) { ob = aR; if(ob.readyState == 4 && ob.status == 200 ){ console.log(ob.responseText); outputAjax.innerHTML = ob.responseText; }else{ console.log ('readyState: '+ob.readyState+' y status: '+ob.status); console.log (ob); } };
Desde ya muchas gracias