Bueno, hice una prueba simplificando al máximo el esquema y funciona. El php sólo dice echo "0".
Acá está el código js. Lo modifiqué para que no tengas que crear y destruir el objeto XMLHttpRequest cada vez que te conectas, pero de la otra manera también funcionaba.
Fijate bien cómo estás llamando a las funciones, desde dónde/qué evento. Como mínimo, debería ser desde "body onLoad", porque te estás refiriendo a elementos html, que hasta que no se cargue la página, no existen. Te digo porque me pasó muchas veces poner getElementById('algunElemento') y si lo hacés antes de que la página cargue, va a aparecer como "undefined". Y ese error muchas veces corta la ejecución del script.
Para chequear que efectivamente existan, poné alerts una línea antes de referirte a algún elemento y fijate que diga HTML Element o por el estilo y no "undefined".
Suerte
Código:
<html>
<head>
<script language="javascript" type="text/javascript">
var conexion;
function AJAXObj(){
conexion=false;
try {
conexion = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
conexion = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
conexion = false;
}
}
if (!conexion && typeof XMLHttpRequest!='undefined') {
conexion = new XMLHttpRequest();
}
// return xmlhttp;
}
function chkPortable(){
var el_select, el_contenedor;
el_contenedor = document.getElementById('txtAjax');
alert(conexion);
conexion.open("POST", "admincpcatnews.php",true);
conexion.onreadystatechange =function() {
if (conexion.readyState==4) {
alert(conexion.responseText); // esto muestra "0"
}
}
conexion.send(null)
}
</script>
</head>
<body onLoad="AJAXObj();chkPortable();">
<input type="text" id="txtAjax" value="test">
</body>
</html>