Foros del Web » Programando para Internet » Javascript » Frameworks JS »

FIREFOX y función handler...

Estas en el tema de FIREFOX y función handler... en el foro de Frameworks JS en Foros del Web. Hola qué tal ! Tengo una duda... si yo hago esto: Código: function handleResponse() { alert(request.status); } En firefox aparecen TRES (3) ventanas de emergentes ...
  #1 (permalink)  
Antiguo 15/08/2007, 04:58
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
FIREFOX y función handler...

Hola qué tal !

Tengo una duda... si yo hago esto:

Código:
function handleResponse() {
	alert(request.status);
}
En firefox aparecen TRES (3) ventanas de emergentes con el mensaje... mientras que en otros solo aparece 1 vez...

¿Esto quiere decir que la función se va a ejecutar 3 veces ó qué? :S

Muy raro... nunca me generó problemas y ya tengo bastantes trabajos hechos ... pero me deja con la intriga.

Un saludo !
  #2 (permalink)  
Antiguo 15/08/2007, 08:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: FIREFOX y función handler...

Como asignas la funcion handleResponse()?

Saludos.
  #3 (permalink)  
Antiguo 15/08/2007, 15:23
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: FIREFOX y función handler...

loading............

Apuesto mi gorra a que lo pone

Código PHP:
request.onreadystatechange=handleResponse(); 
tienes que ponerlo

Código PHP:
request.onreadystatechange=handleResponse

connection closed.
__________________

Maborak Technologies
  #4 (permalink)  
Antiguo 15/08/2007, 20:25
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
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.
  #5 (permalink)  
Antiguo 16/08/2007, 07:09
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: FIREFOX y función handler...

loading...........


Bueno primero... he notado qu envias tus parámetros

Cita:
function sendData(vUrl) {
setQueryString(); // Armo un string con los datos del form
httpRequest("POST", vUrl, true, handleResponse, queryString);
}
pero en tu funcion

Cita:
function httpRequest(reqType, url, asynch, respHandle) {
no tienes el parametro donde se almacenará queryString... talvez eso este afectando el comportamiento de tu aplicacion...

Otra falla... puede que ser a causa de que tu request no está de forma global o encapsulada en forma local.


Código PHP:
var request;
function 
httpRequest(reqTypeurlasynchrespHandle) {

    if (
window.XMLHttpRequest) { // Mozilla
        
request = new XMLHttpRequest(); 
intenta ponerlo

Código PHP:
var request;
function 
httpRequest(reqTypeurlasynchrespHandle) {

    if (
window.XMLHttpRequest) { // Mozilla
        
request = new XMLHttpRequest(); 
Como te mando la gorra? :D



connection closed.
__________________

Maborak Technologies
  #6 (permalink)  
Antiguo 01/09/2007, 15:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
Re: FIREFOX y función handler...

Que tal MAborak, gracias por tu respuesta y disculpa por mi tardanza.

Si, lo del request es verdad. En un principio era una variable global y luego entre prueba y prueba lo había sacado del entorno global pero omiti corregir ese error.
(grax)

Con respecto a la función y sus parametros... voy a probarlo. vi otros ejemplos en los que tampoco definían un elemento pero luego si se encontraban con un arguments[x] donde "x" sería un argumento no definido... lo utilizaban.

Igualmente, me resulta un poco desprolijo esto, lo voy a mejorar un poco.

Sabes que por otro lado, estoy notando que firefox me hace esta clase de cosas en con otros eventos... no se si es mi codigo ó qué... probablemente me siente un ratito a re-escribir todo ó hacer pruebas con una versión ultra-sencilla de lo que arme y ver si no hay errores... a ver si lo puedo depurar un poquito.

Te dejo un saludo y gracias por responder! :)

eDU
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:23.