Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/08/2007, 20:25
Computer XTress
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 20 años
Puntos: 2
Re: FIREFOX y función handler...

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.