Pues me he ganado una gorra parece :P
No. No pongo los "()", ya aprendi eso :D
Aún así, puede que tenga un error parecido... a ver, les paso todo mi codigo a ver qué les parece:
DIAGRAMA:
httpRequest(reqType, url, asynch, respHandle)
Con esta función instancio el objeto XMLHttpRequest y realizo un request de tipo POST o GET, según el reqType.
initReq(reqType, url, bool, respHandle)
Esta es la función que se llama desde httpRequest();, lo que hace es inicializar el request en background.
sendData(vUrl)
Por ultimo uso esta funcion para enviar un request via POST. Desde los formularios, pongo <form action="javascript
: void%200;" method="post" onsubmit="sendData(vUrl);">
En este caso, handleResponse es una función única....
Estas son las funciones:
Código:
//
// Función para inicializar el objeto request
//
function httpRequest(reqType, url, asynch, respHandle) {
if (window.XMLHttpRequest) { // Mozilla
request = new XMLHttpRequest();
if (request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
}
if (request) {
// Si el tipo de request es POST, el 5to parámetro es POST data.
if (reqType.toLowerCase() != "post") {
initReq(reqType, url, asynch, respHandle);
} else {
// POST data
var args = arguments[4];
if (args != null && args.length > 0) {
initReq(reqType, url, asynch, respHandle, args);
}
}
} else {
alert("Error: Su navegador no soporta AJAX.<br/><center><a href='http://www.getfirefox.com/'>Actualicese</a> a Mozilla Firefox.</center>");
}
}
//
// Inicializar un request en Back Ground
//
function initReq(reqType, url, bool, respHandle) {
// Loading...
newLoadWin();
try {
request.onreadystatechange = respHandle;
request.open(reqType, url, bool);
// POST request:
if (reqType.toLowerCase() == "post") {
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
// Mozilla
//request.overrideMimeType("text/xml");
request.send(arguments[4]);
} else {
request.send(null);
}
} catch (errv) {
alert("Error: No se pudo inicializar el request.");
}
}
//
// Envía un request
//
function sendData(vUrl) {
setQueryString(); // Armo un string con los datos del form
httpRequest("POST", vUrl, true, handleResponse, queryString);
}
Todo lo esto lo arme leyendo el libro AJAX HACKS de O'Relly...
¿Estaré metiendo la pata en algunas de las funciones que hacen el request?
Muchas gracias, un saludo grande.