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

    Select dinamica su IE non funziona

    Buongiorno a tutti, spero di essere chiaro nella spiegazione del mio problema che si verifica solamente su IE, mentre su tutti gli altri browser funziona perfettamente.
    Devo dire che ho cercato e ricercato per tre giorni su questo forum argomenti simili ma non ho trovato nulla che mi chiarisse il problema.
    Non credo che lo script sia sbagliato eppure non funziona.

    Il problema è questo:
    Ho una select che viene popolata con dati presi da database che attraverso uno script popola una seconda select e così via. Queste select mi servono per selezionare regione, quindi provincia, quindi città.
    Su IE quando seleziono la regione, il debugger di IE mi dice, alla riga 14 dello script che gestisce la prima select:
    "estraiprovincia is null or not an object"

    Questo è il link della pagina:
    http://www.p-mate.it/p-mate/p-mate-trovanegozio.php
    (Per chi vuole provare, attualmente ci sono dati solo nella provincia di Milano.)

    Questo è il php della select:
    Codice PHP:
    <?php

    echo "<form action=\"\">";

    echo 
    " <select name=\"regione\" size=1 onchange=\"showProvincia(this.value)\">";
    echo 
    " <option value=\"\" selected >Seleziona la Regione...</option>";

    $query DB_Query("SELECT * FROM $table7 WHERE parent =0 ORDER BY name ASC");
    while (
    $result DB_Get_Results($query))

    {
    echo 
    "<option value=\"$result[0]\">$result[1]</option>";       

    }
    echo 
    " </form>";
    ?>
    e questo è lo script che gestisce la select:

    codice:
    var estraiprovincia;
       
    function showProvincia(strp) 
    {
        if (parseInt(strp) == "")
        {
    		
            document.getElementById("BoxProvincia").innerHTML = "";
        }
        else
        {
            var url = "../p-mate/provincia.php?regione="+strp;
            estraiprovincia = RicavaBrowser(CambioStato);
            estraiprovincia.open("GET", url, true);
            estraiprovincia.send(null);
            }
          }
          
    function CambioStato()
    {
        if (estraiprovincia.readyState == 4)
        {
            var R = document.getElementById("BoxProvincia");
            R.innerHTML = estraiprovincia.responseText;
    		
    		
        }
    }
    
    
    
    function RicavaBrowser(QualeBrowser)
    {
        if (navigator.userAgent.indexOf("MSIE") != (-1))
        {
            var Classe = "Msxml2.estraiprovincia";
            if (navigator.appVersion.indexOf("MSIE 5.5") != (-1))
            {
                Classe = "Microsoft.estraiprovincia";
            } 
            try
            {
                estraiprovincia = new ActiveXObject(Classe);
                estraiprovincia.onreadystatechange = QualeBrowser;
                return estraiprovincia;
            }
            catch(e)
            {
                alert("Errore: l'ActiveX non verra' eseguito!");
            }
        }
        else 
        {
            estraiprovincia = new XMLHttpRequest();
            estraiprovincia.onload = QualeBrowser;
            estraiprovincia.onerror = QualeBrowser;
            return estraiprovincia;
        }
    }
    Dov'è che sbaglio? Qualcuno può aiutarmi? Grazie 1000!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Prova con:

    <select name="regione" size=1 onchange="showProvincia(this.options[this.selectedIndex].value)">

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Ciao Br1 intanto grazie per la risposta.

    Putroppo no, ho provato ma non funziona. il debugger mi dice:
    this.option is null or not an object.

  4. #4
    Scusa aggiungo anche che non funziona nemmeno con gli altri browser!

  5. #5
    Scusa br1 ho sbagliato!

    mi ero dimenticato una "S".

    comunque su IE continua a non funzionare, mentre sugli altri browser è OK!

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Trasformi in intero e confronti con stringa?

    if (parseInt(strp) == "")

    usa

    if (isNaN(strp))
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Scusa ma non ti seguo.

    Ammetto di aver trovato e modificato questo script preso da un altro utente. In realtà ne ho provati diversi di script che in pratica svolgevano la stessa funzione, ma la realtà è che comunque su IE non funziona.

    Ho provato anche a togliere questo if ma non va lo stesso.

    Non vorrei dire cavolate ma credo che ci sia qualcosa di sbagliato nella funzione CambioStato.

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Select dinamica su IE non funziona

    Ma come ti sei inventato questa sintassi?
    codice:
    function RicavaBrowser(QualeBrowser)
    {
        if (navigator.userAgent.indexOf("MSIE") != (-1))
        {
            var Classe = "Msxml2.estraiprovincia";
            if (navigator.appVersion.indexOf("MSIE 5.5") != (-1))
            {
                Classe = "Microsoft.estraiprovincia";
            } 
            try
    ...
    torna all'originale
    codice:
    function RicavaBrowser(QualeBrowser)
    {
        if (navigator.userAgent.indexOf("MSIE") != (-1))
        {
            var Classe = "MSXML2.XMLHTTP";
            if (navigator.appVersion.indexOf("MSIE 5.5") != (-1))
            {
                Classe = "Microsoft.XMLHTTP";
            } 
            try
    ...
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Cavolo scusa!

    quello proprio non l'avevo visto.

    Ho modificato lo script ma non funziona lo stesso, però mi da "Unknown runtime error alla riga 24
    codice:
    R.innerHTML = estraiprovincia.responseText;

  10. #10
    Ho modificato e semplificato completamente lo script che popola la seconda select.

    lo script trovaprovincia.js
    codice:
    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 showProvincia(strp) {
        myRequest = CreateXmlHttpReq(myHandler);
        myRequest.open("GET","../p-mate/provincia.php?no-cache="+new Date().getTime()+"&regione=" + strp, true);
        myRequest.send(null);
    }
    
    
    
    function myHandler() {
        if (myRequest.readyState == 4 && myRequest.status == 200) {
            document.getElementById("BoxProvincia").innerHTML = myRequest.responseText;    
        }
    }
    Ho aggiunto nella funzione showProvincia una stringa che mi cancella la cache
    codice:
        myRequest.open("GET","../p-mate/provincia.php?no-cache="+new Date().getTime()+"&regione=" + strp, true);
    ma il debugger di IE mi da sempre lo stesso errore "unknown runtime error" sull'ultima riga di codice
    codice:
            document.getElementById("BoxProvincia").innerHTML = myRequest.responseText;
    Non so più dove sbattere la testa!!!

    Aiutooooo!!!

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.