- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- AJAX:IE e FIREFOX, ma perchè non vanno mai uguale?
-
AJAX:IE e FIREFOX, ma perchè non vanno mai uguale?
Ciao a tutti,
la problematica di oggi (intesa come era geologica proprio) è il capire perchè ie e firefox devano sempre litigare.
Ho uno script in ajax che richiama dati da una pagina php e fin qua tutto ok.
I dati si vedono meravigliosamente bene in IE6, in IE7...vado a vedere con FF toccandomi gli zebedei e infatti ecco la martellata.
Non si vede tutto.
In pratica io faccio due chiamate a due pagine, ben suddivise in due div con nomi diversi, che richiamano due funzioni Javascript ben distinte che si appoggiano a 2 handlers diversi.
I risultati delle due chiamate come dicevo si vedono in IE, mentre in FF solo quelli della seconda..
Considerando che sono abbastanza novello in ajax c'è qualcosa che voi sapete e che io non so?
thank's
Criss
-
Nella prima chiamata interroghi una pagina che non è del tuo dominio?
-
No no, sono entrambe del dominio di riferimento. E' il db ad essere su di un altro server, ma dato che le interrogazioni singole danno il risultato cercato e le chiamate alle pagine php singolarmente funzionano meravigliosamente non capisco perchè IE si e FF no...mi viene da pensare qualcosa riguardo l'interpretazione diversa del javascript...ma non so cosa...
-
hai utilizzato gli indirizzi assoluti?
http://www.dominio.ext/scrip.php o solo /script.php
a me con FF dava problemi in questo senso.
-
Ciao, ho provato con gli indirizzi assoluti ma nulla da fare.
Qualcuno ha qualche altra idea?
tra l'altro con IE appena apro la pagina qualche volta (non sempre) si comporta come firefox e cioè visualizza solo la seconda chiamata..ma non appena faccio il refresh tutto si sistema. Con FF manco a martellate.
-
immagino le chiamate vengano fatte con window.onload o qualcosa di simile.
io rincontrollerei la prima chiamata se usa una funzione diversa, o eventualmente controllerei che non vada in timeout la chiamata... e quindi non restituisca nulla ( ovvio se non hai preventivato un output in caso di errore/timeout )
-
Ciao, nulla di tutto questo...ho cmq sistemato finalmente.
Il problema era quello di suddividere handlers e chiamate in tutte le forme.
il codice è:
var myRequest = null;
function CreateXmlHttpReq(handler) {
var xmlhttp = null;
try {
xmlhttp = new XMLHttpRequest();
} catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttp.onreadystatechange = handler;
return xmlhttp;
}function myHandler() {
if (myRequest.readyState == 4 && myRequest.status == 200) {
e = document.getElementById("uno");
e.innerHTML = myRequest.responseText;
}
}function myHandler2() {
if (myRequest.readyState == 4 && myRequest.status == 200) {
e = document.getElementById("due");
e.innerHTML = myRequest2.responseText;
}
}function uno(){
var e = document.getElementById("uno");
myRequest = CreateXmlHttpReq(myHandler);
myRequest.open("GET","pagina.php?id=1");
myRequest.send(null);}
function due(){
var e = document.getElementById("due");
myRequest2 = CreateXmlHttpReq(myHandler2);
myRequest2.open("GET","pagina.php?id=2");
myRequest2.send(null);}
Nn è bello stilisticamente ma almeno funziona (a meno che non sia l'unico modo..).
-
prova a guardare advajax, è una classe javascript molto utile, almeno io mi ci trovo abbastanza bene ad usarla
-
ah tu usavi Microsoft.XMLHTTP anche per firefox allora...
Pensavo ci fossy il "Try"