Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Primi passi in AJAX e già IE non va :D

    Ciao a tutti,
    ho quasi scoperto per caso questa simil "tecnologia". Dopo essermi documentato un po', sono partito con qualche prova base base...

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    <script type="text/javascript">

    var xmlHttp;

    function createXMLHttpRequest() {
    if (window.ActiveXObject) {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
    }
    }

    function startRequest() {
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open("GET","simpleResponse.xml",true);
    xmlHttp.send(null);
    }

    function handleStateChange() {
    if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
    alert("Response: "+ xmlHttp.responseText);
    }
    }
    }
    </script>


    </head>

    <body>
    <label>
    <input type="button" value="Invia" onclick="startRequest();"/>
    </label>
    </body>
    </html>



    Bene... in Firefox non ho problemi...
    in IE invece mi viene restituito un errore:
    riga: 12
    carattere: 3
    errore: il server di automazione non puo' creare l'oggetto


    Se il buon giorno si vede dal mattino, sono morto!

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    quando istanzi l'oggetto su IE devi provare anche questo:

    new ActiveXObject("Msxml2.XMLHTTP");

    e non solo quello che hai usato tu


    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    ok... ma con quale condizione?

    Per fortuna che quel codice è il primo tratto da un libro specifico su AJAX. Partono davvero bene...

    Cmq... tornando a noi... sta' storia dell'inizializzazione non la capisco... è un po' come quando si fa il controllo dello useragent per utilizzare correttamente le funzioni js?

    Quindi quali e quante condizioni devo verificare? Come le discrimino?
    Tra IE e gli altri si usa l'activeXObject... ma poi per decidere se usare quello che ho scritto... e quello che hai scritto tu, come si fa?

    bYe!
    Andrea

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    la funzione più usata per creare l'oggetto è questa

    codice:
    if (typeof XMLHttpRequest != "undefined") {
       // Browser w3c compatibile
       XMLHttpReqObj = new XMLHttpRequest();
    }
    
    else {
       // Explorer
       try {
       XMLHttpReqObj = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             XMLHttpReqObj = new ActiveXObject("Microsoft.XMLHTTP");
          } 
          catch (e) {
             XMLHttpReqObj = null;
          }
       }
    }
    Il primo costrutto if discrimina già il caso in cui si stia usando Explorer oppure no


    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Ciao fcaldera! Ho letto questa tua risposta e dato che sto studiando ajax ne approfitto per chiederti che differenza c'è fra i due tipi che hai segnalato per IE (Msxml2.XMLHTTP e Microsoft.XMLHTTP)... Le funzioni che ho visto finora testano solo il secondo e per ora non mi hanno dato problemi, ci sono differenze di compatibilità con le diverse versioni di IE per caso?

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    da tutti i vari tutorial che ho potuto leggere è necessario provare ad istanziare due oggetti poichè questi sono differenti in base alla versione di Explorer

    il costrutto try catch serve proprio per provare ad istanziare un primo oggetto: se questo non c'è viene creata un'eccezione controllata da catch e quindi si prova ad istanziare un secondo oggetto.

    Nota che al di fuori dell'if sarebbe opportuno controllare comunque se la variabile XMLHttpReqObj è diversa da null e, in caso contrario, redirigere lo script in modo da gestire la mancanza dell'oggetto.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Capito! Grazie!

  8. #8
    Grazie mille per lo script.

    E... ad esempio... per dovere di cronaca, con Microsoft.XMLHTTP a me non funzionava... con l'altro si!
    IE 6.0.2900.2180.xpsp_sp2_gdr.050301-1519

    bYe!

  9. #9
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Originariamente inviato da sgabello

    IE 6.0.2900.2180.xpsp_sp2_gdr.050301-1519
    Idem! Però questo:
    codice:
    if (window.XMLHttpRequest) {
    	req = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
    	req = new ActiveXObject("Microsoft.XMLHTTP");
      }
    non sembra darmi problemi.... boh!
    Per sicurezza mi adeguo a quanto spiegato da fcaldera!

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    un altro utente (bubu3k) ha dato finora lo script più completo per istanziare l'oggetto


    si trova qui
    http://forum.html.it/forum/showthrea...25#post8643525

    (è la funzione createXMLHttp() )
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.