smaug_
09-07-2008, 10:00
Buenos dias, a ver si alguien por aqui alguna vez se ha tenido que enfrentar a ajax y le ha surgido un problema parecido al mio.
Estoy haciendo una aplicacion web y decidií hacerla con ajax, una tecnologia que no he usado nunca hasta hace dos semanas. Hasta el momento he estado haciendo las pruebas usando Opera, y ahora que la tengo montada casi entera, me doy cuenta que no funciona con otro navegador (he probado iexplorer, firefox y safari). Y no tengo ni idea de porque es, os pongo las partes del codigo mas interesantes:
Estas son las funciones principales, la que carga elobjeto XMHTTP y la funcion general de peticion de contenidos.
function start_xhr(){
if(window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else if ( window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function loadContent(url,method,funcion,param){
peticion = start_xhr();
if(peticion){
peticion.overrideMimeType('text/xml');
peticion.onreadystatechange=funcion;
peticion.open(method,url,false);
peticion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
peticion.send(param);
}
}
Este seria el par de funciones, la primera es la encargada de montar la peticion y la siguiente de mostrar los resultados:
function llenaConsejeria(){
tabla="Consejeria";
campo="consejeria";
query="Buscar=Buscar&tabla="+tabla+"&campo="+campo;
lista=document.getElementById('area');
area=document.getElementById('area').options[lista.selectedIndex].value;
alert(area);
if(area!=null && area!='' && area!='NA') query+="&area="+area;
loadContent("http://localhost/apli/consulta.php","POST",muestraConsejeria,query);
}
function muestraConsejeria(){
var cad=peticion.responseText;
capa='consejeria';
rellenaCombo(cad,capa);
}
En la segunda funcion, se llama para rellenar a la funcion rellenaCombo, pero funciona perfectamente. Tras investigar, parece que el fallo esta en que la funcion de muestra nunca se llega a ejecutar. Vamos la funcion que le pasamos a peticion.onreadystatechange nunca llega a ejecutarse.
A que podria ser debido? En todos los manuales que he visto, esa parte se hace asi, hay distinción entre navegadores para esa parte??
Gracias y un saludo.
Estoy haciendo una aplicacion web y decidií hacerla con ajax, una tecnologia que no he usado nunca hasta hace dos semanas. Hasta el momento he estado haciendo las pruebas usando Opera, y ahora que la tengo montada casi entera, me doy cuenta que no funciona con otro navegador (he probado iexplorer, firefox y safari). Y no tengo ni idea de porque es, os pongo las partes del codigo mas interesantes:
Estas son las funciones principales, la que carga elobjeto XMHTTP y la funcion general de peticion de contenidos.
function start_xhr(){
if(window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else if ( window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function loadContent(url,method,funcion,param){
peticion = start_xhr();
if(peticion){
peticion.overrideMimeType('text/xml');
peticion.onreadystatechange=funcion;
peticion.open(method,url,false);
peticion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
peticion.send(param);
}
}
Este seria el par de funciones, la primera es la encargada de montar la peticion y la siguiente de mostrar los resultados:
function llenaConsejeria(){
tabla="Consejeria";
campo="consejeria";
query="Buscar=Buscar&tabla="+tabla+"&campo="+campo;
lista=document.getElementById('area');
area=document.getElementById('area').options[lista.selectedIndex].value;
alert(area);
if(area!=null && area!='' && area!='NA') query+="&area="+area;
loadContent("http://localhost/apli/consulta.php","POST",muestraConsejeria,query);
}
function muestraConsejeria(){
var cad=peticion.responseText;
capa='consejeria';
rellenaCombo(cad,capa);
}
En la segunda funcion, se llama para rellenar a la funcion rellenaCombo, pero funciona perfectamente. Tras investigar, parece que el fallo esta en que la funcion de muestra nunca se llega a ejecutar. Vamos la funcion que le pasamos a peticion.onreadystatechange nunca llega a ejecutarse.
A que podria ser debido? En todos los manuales que he visto, esa parte se hace asi, hay distinción entre navegadores para esa parte??
Gracias y un saludo.