noviembre
2005
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!
Entradas relacionadas:
Han escrito 5 comentarios de «Un problemita con ajax, resuelto.»
apyo
Martes 22 de noviembre, 2005 13:59.-
ups, pense que ibas hablar de futbol europeo jajaja
se nota que soy cero docto en programación o no se de que hablabas pero o.k.
[jeep]
Martes 22 de noviembre, 2005 14:27.-
haaaa y… eso que es???
![Responder a [jeep]](http://media.ymipollo.com/media/reply.png)
sunco
Sábado 03 de diciembre, 2005 23:41.-
Yo recien ando metido en Ajax. Tengo una web donde puedes hacer login (que toma los datos de el Invision Power board).. tengo varias secciones que son leidas con ajax, para lo mismo, ahorrar tiempo, ancho de banda, etc.. Con las cookies tengo problemas al hacer login pero solo con el Internet Explorer, con Firefox, Netscape y Opera no me pasa eso.. algo del cache supongo..
Lo que quiero hacer ahora, es enviar archivos al servidor pero la unica forma que se es enviando el formulario completo ya que no se como mandar el con ajax.. has hecho eso ?

sunco
Sábado 03 de diciembre, 2005 23:42.-
ya que no se como mandar el type=file con ajax.. has hecho eso ?
(no salio en el anterior post)

ToRo
Lunes 03 de abril, 2006 14:51.-
pues es igual sunco, se envía por post. Solo que habría que ver que opciones se tienen que enviar (con setRequestHeader).


