Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    7

    Uso di XMLHttpRequest.open su Internet explorer

    Buongiorno a tutti.
    Leggo questo sito da tanto tempo, ma al forum mi sono iscritto soltanto ora.
    Ho un problema.

    Ho usato javascript per caricare il contenuto di un file di testo
    dentro un elemento <div>.

    Su firefox tutto funziona bene.

    Su Internet Explorer, niente da fare. L'esecuzione sembra arrestarsi
    sulla seguente istruzione:

    xmlhttp.open("GET", nomefile, false);

    Ho provato anche a mettere "POST" al posto di "GET".
    Non succede niente.

    La versione di IE con cui ho provato era la 8.
    Poi ho installato la versione 9.
    Il risultato è lo stesso.

    Anche con Opera, versione 11.10, lo script non funziona,
    ma con una differenza: Opera sembra che cancelli il contenuto dell'elemento <div>
    ma non scrive niente.

    Di seguito riproduco uno script html con il codice javascript incorporato, e
    dopo un file di testo prototipo.

    Lo script html l'ho chiamato:
    avvio.html

    -------------------------------------------------------------

    <html>
    <head>
    <script language="javascript" type="text/javascript">

    // funzione per assegnare un oggetto XMLHttpRequest
    function assegnaXMLHttpRequest()
    {
    var XHR = null;
    var browserUtente = navigator.userAgent.toUpperCase();

    if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
    XHR = new XMLHttpRequest();
    else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
    {
    if(browserUtente.indexOf("MSIE 5") < 0)
    XHR = new ActiveXObject("Msxml2.XMLHTTP");
    else
    XHR = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return XHR;
    };

    function leggifile(nomefile, nometag)
    {
    xmlhttp=assegnaXMLHttpRequest();

    if(xmlhttp)
    {
    xmlhttp.open("GET", nomefile, false);
    xmlhttp.send();
    }

    if (xmlhttp.readyState==4 && nometag != null && nometag != '')
    {
    document.getElementById(nometag).innerHTML=xmlhttp .responseText;
    }
    else
    {
    document.getElementById(nometag).innerHTML="Errore . " + xmlhttp.readyState;
    }

    xmlhttp.setRequestHeader("connection", "close");
    }

    </script>
    </head>

    <body>

    <div id="recipiente">
    Qui deve andare il nuovo contenuto.
    </div>





    <button type="button" onclick="leggifile('testo.txt','recipiente')">Prem i</button>
    </body>

    </html>

    ================================================



    Ed ecco il contenuto del file di testo prototipo che ho chiamato:
    testo.txt

    -------------------------------------------------------------

    Quel ramo del lago di Como
    che volge a mezzogiorno ...

    ================================================


    Ho visto su internet una vasta letteratura a proposito di questo
    problema, ma le soluzioni non mi sono state chiare. Non so se
    è coinvolta la cache di IE.

    Mi chiedo d'altra parte se esistono altre soluzioni per portare
    in modo dinamico il contenuto di un file dentro un elemento html.

    Grazie in anticipo dell'attenzione.
    Ciao.
    Sicanof

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ie ha problemi di cache quando vengono effettuate chiamate ajax, devi concatenare un ulteriore parametro(numero random) che serve per diversificare le varie chiamate e fare in modo che IE non vada ad usare la cache es: "miaurl?ignoreCache="+new Date().getTime();

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    7
    Ho capito in questo modo:

    trasformare la seguente istruzione:

    xmlhttp.open("GET", nomefile, false);

    in questa'altra:

    xmlhttp.open("GET", nomefile+"?ignoreCache="+new Date().getTime(), false);

    Se è questo ciò che bisognava fare, purtroppo non funziona.
    Grazie
    Ciao.
    Sicanof

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    togli questa riga:
    xmlhttp.setRequestHeader("connection", "close");
    che incasina i browser che usano come motore/tecnologia gecko.
    Se posso io ti consiglio usa jquery per ajax nessun problema, nessun conflitto, nessun bag.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    7
    @cavicchiandrea.

    Ho eliminato la riga seguente:
    xmlhttp.setRequestHeader("connection", "close");

    Purtroppo nel mio script questo non ha prodotto alcun risultato.

    Per quanto riguarda jquery, non lo conosco ancora, ma immagino
    che sia una buona soluzione. Mi piacerebbe adottarla. Vedrò.

    Ora desidero far presente una situazione che ho scoperto
    poco fa facendo delle prove.

    Smanettando con le opzioni internet su IE 9 ho DISabilitato
    la seguente opzione:

    Abilita support XMLHTTP nativo

    in Opzioni Internet/Avanzate/Sicurezza.

    A questo punto, quando apro lo script html "avvio.html" con IE,
    viene comunque aperta un popup per avvertire che è stato impedito
    alla pagina web di eseguire script o controlli ActiveX con un pulsante
    per consentire il contenuto bloccato.
    Premo il pulsante e ... tutto funziona, anche su IE!


    Bene, se faccio la stessa cosa nel sito che sto costruendo,
    aprendolo con IE, il popup di avvertimento non compare e
    il codice non funziona.

    Bisognerebbe, credo, impostare in modo automatico di NON bloccare gli script.
    Come fare?

    Grazie.
    Ciao.
    Sicanof

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    7
    Ho risolto con jquery.

    Anche con XMLHTTP può funzionare su Internet Explorer:

    bisogna disattivare il flag "Abilita support XMLHTTP nativo" e
    bisogna attivare il flag "Consenti l'esecuzione di contenuto attivo in file di Risorse del computer*"
    su Opzioni/Avanzate/Sicurezza di Internet Explorer 9

    oppure

    su [B]Opzioni/Avanzate/Protezione di altre versioni di I.E.

    (Ricordarsi di chiudere IE dopo le modifiche e poi riaprirlo)

    Purtroppo tutto funziona con un piccolo script,
    ma quando uso script piu complessi, costruiti con pagine xml e xslt
    non funziona più.

    Ho provato allora con jquery

    In questo caso bisogna attivare soltanto il flag "Consenti l'esecuzione di contenuto attivo in file di Risorse del computer*"
    visto sopra, e poi tutto funziona, anche con le pagine costruite tramite xml e xslt.

    Grazie a tutti.
    Ciao.
    Sicanof

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.