Un problemita con ajax, resuelto.
El día de ayer tenía varios problemas con AJAX. Resulta que pasaba varios parámetros por el método GET y todo bien, el problemo fué cuando necesité pasar variables por POST en AJAX. Básicamente para crear el objeto uso la siguiente función en javascript:
function createRequestObject() {
try {
objeto = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try { objeto= new ActiveXObject("Microsoft.XMLHTTP"); }
catch (E) { objeto= false; }
}
if (!objeto && typeof XMLHttpRequest!='undefined')
objeto = new XMLHttpRequest();
return objeto;
}
http = createRequestObject();De esa forma, en el objeto http tengo la forma de llamar a los procedimientos de XMLHttpRequest. Para pasar variables por GET es muy, muy sencillo, tengo otra función:
function sndReq(argumentos,elid) {
aaa = elid;
http.open('get','ARCHIVO.PHP?'+argumentos,true);
http.onreadystatechange = handleResponse;
http.send(null);
}Donde ARCHIVO.PHP en este caso es quien me maneja los parámetros que le pase. Hasta allí esta bien, entonces para envíar parámetros por medio del método POST pensé en crear otra función exclusiva para ello:
function psndReq(argumentos,elid) { aaa = elid; url = “ARCHIVO.PHP?”; http2.open(‘POST’,url,true); http2.setRequestHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’); http2.send(argumentos); http2.onreadystatechange = handleResponse2;}
(nótese que ahora ARCHIVO.PHP es pasado a través de una variable, si no se hace así específicamente no funciona… ignoro el porque, lo descubrí después de miL intentos de que funcionara.
Ya tengo las dos funciones para mandar por GET o POST, el problema es que utilizando el objeto http, si empiezas a utilizar GET, entonces ya no es posible usarlo con POST... una vez más, ignoro el porqué. Como sea, la solución es crear un nuevo objeto http y una función que registre las acciones de la respuesta:
function handleResponse() {
var moreID = document.getElementById(aaa);
moreID.style.display = "block";
if (http.readyState == 1){
moreID.innerHTML = 'CARGANDO...';
}
if(http.readyState == 4){
response = http.responseText;
moreID.innerHTML = response;
}
}
Bueno, próximamente pondré de manera detallada como utilizar estas funciones, aunque es muy sencillo.
Salut!


