Home Portfolios Blog Contacto
Buscar artículo:


Ajax
ASP
Asp.net
Blogosfera
Cosas Útiles
Css
Delphi
Flash
Foros
Gmail
Google Maps
Internet
Javascript
Office
Otros
php
Programando
Ruby on Rails
Swish-Max
Windows

- Ajax

AJAX COMPATIBLE CON IE Y FIREFOX
Bueno el origen de este artículo es un problema que se me ha presentado a la hora de utiliza ajax y el objeto XMLHTTP con ie y firefox, ya que ambos no lo tratan de la misma manera.

Vereis al enviar las variables a una página dinámica usaba esta rutina

Código:



xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
document.getElementById("financiacion").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.setRequestHeader('Accept','message/x-jl-formresult');
xmlhttp.send();
return false;



 


en ie funciona prefectamente, ahora el problema viene con firefox ya que salta un error que dice que en método send faltan parámetros y no hace nada. Pues bien si pongo este código, en firefox funciona perfecto, pero en ie nos da error y no funciona
Código:


xmlhttp.open("POST",url,true);
var valores_a_mandar = "variables=valores";
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send('?'+valores_a_mandar);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
document.getElementById("financiacion").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.setRequestHeader('Accept','message/x-jl-formresult');
xmlhttp.send();
return false;


 


Lógicamente xmlhttp lo saco de aquí
Código:

var xmlhttp
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
tipo ='firefox';
} catch (e) {
try {
tipo = 'explorer';
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
} catch (E) {
xmlhttp=false
}
}
@else
xmlhttp=false
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false
}
}
 



Pues bien para solucionarlo lo que hago es ver de que navegador se trata y tomo un camino u otro.

Código:


if (navigator.appName=='Microsoft Internet Explorer'){
var nav = 'explorer';
}
else
{
var nav ='firefox';
}
if (nav=='explorer'){
xmlhttp.open("GET",url,true);
}
else
{
xmlhttp.open("POST",url,true);
var valores_a_mandar = "variables=valores";
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send('?'+valores_a_mandar);

}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
document.getElementById("financiacion").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.setRequestHeader('Accept','message/x-jl-formresult');
xmlhttp.send();
return false;


 


Esta es la forma con la que he conseguido que la misma rutina funcione con los dos navegadores.

De todos modos es una forma un poco "tosca" por no llamarla "cutre" pero para salir del paso en una urgencia puede que nos sirva.

Seguiré investigando...
Autor: perrogrun
2005-10-19 11:22:27


Realiza tu comentario acerca del artículo
Usuario
Email
Comentario

* Para escribir código usa las etiquetas [code] tu código [/code]