• Moderatore •

    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


  • User Attivo •

    Nella prima chiamata interroghi una pagina che non è del tuo dominio?


  • Moderatore •

    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...


  • Super User •

    hai utilizzato gli indirizzi assoluti?

    http://www.dominio.ext/scrip.php o solo /script.php

    a me con FF dava problemi in questo senso.


  • Moderatore •

    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.


  • Super User •

    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 )


  • Moderatore •

    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..).


  • Super User •

    prova a guardare advajax, è una classe javascript molto utile, almeno io mi ci trovo abbastanza bene ad usarla 🙂


  • User Attivo •

    ah tu usavi Microsoft.XMLHTTP anche per firefox allora...
    Pensavo ci fossy il "Try"