¿Tienes una cuenta? identificate: Usuario Contraseña o puedes obtener una gratis.

ToRo Blog

¡Al pesebre... fieras!

22
noviembre
2005

Un problemita con ajax, resuelto.

Psicopata

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!

Almacenado en Tecnología, Ajax [ Enlace | 5 comentarios ] del.icio.us del.icio.us Estrella este post *****
comparte esto
Comparte esta entrada (del.icio.us, por correo, etc) o agrega este blog a tu Google Reader.

Entradas relacionadas:
  1. AJAX ¿wtf?
  2. AJAX Libraries API
  3. javascript
  4. Hacer URL clickeables con javascript
  5. Nueva página, El Siglo de Torreón v3.

Han escrito 5 comentarios de «Un problemita con ajax, resuelto.»

foto 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.

foto [jeep]
Martes 22 de noviembre, 2005 14:27.

haaaa y… eso que es???

sin foto 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 ?

sin foto 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)

foto 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).

Si usted tiene una cuenta en ymipollo.com, identifíquese:
Usuario: Password: (recordar identificación en este blog)
Escriba su comentario:
Por favor escriba respecto al post, procure revisar su ortografía. Si su comentario no es respecto al tema, por favor no lo haga.

Usted escribirá este mensaje como:
Es posible que su comentario no aparezca de forma inmediata (o que nunca aparezca) eso depende de la decisión del autor de este blog.

enviarme correo cuando alguien comente suscribirse a este post.