Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema select option

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58

    Problema select option

    Buon giorno,

    Non sono pratico di javascript /ajax e vorrei il vostro aiuto.

    Ho trovato sul sito uno script per popolare 2 select dinamiche regioni+provincie.La select regioni viene popolata estraendo i record da un db e tramite l'evento onchange="cerca()"viene inviato il dato <%=rsa("strregion")%>"> alla pagina cercaprovince.asp che restituisce le province e riempie la select provincie. e fin qua tutto bene.
    A me pero serviva anche la select comuni e cosi ho duplicato lo script ajax che posto per popolare anche la select comuni.
    In pratica quando la SELECT PROVINCE RICEVE I DATA, tramite l'evento onchange="trova()" dovrebbe inviare il SUO DATO alla pagina cercacitta.asp?provincia e restituire i comuni.

    Su firefox e Opera FUNZIONA PERFETTAMENT MENTRE mentre su IE, vengno popolate leselect REGIONI E PROVINCE MA non viene passato il dato della select province, E LA SELECT COMUNI RIMANE VUOTA se invece scrivo nella prima riga della funzione TROVA():
    al posto di var valorecampo = document.postad.O2.options[document.postad.O2.selectedIndex].value;

    var valorecampo = "torino";

    Funziona anche su IE e vengono listati tutti i comuni della provincia di Torino

    Potete aiutarmi ???
    Posto il codice:
    ----------------------------------------------------------------------------------
    SELECT REGIONI:

    'apro connessione e istanzio oggetti
    OpenDB(connAJAX)
    'query per la prima select
    strsql = "SELECT strcode,strregion FROM regioni"
    rsa.open strsql

    %>

    <select id="REGIONE" name="O1" class="forms" onchange="cerca()">
    <option selected="selected" value="">Selezionare Regione</option>
    <%
    do while not rsa.eof
    %>
    <option value="<%=rsa("strregion")%>"><%=rsa("strregion")% ></option>
    <%
    rsa.movenext
    loop
    CloseDB
    %>
    </select>
    ------------------------------------------------------------------------------------

    SELECT PROVINCE:


    <select name="O2" id="provincia" class="forms" onchange="trova()"> </select>
    --------------------------------------------------------------------------------------

    SELECT COMUNI

    <select name="o3" class="forms" >

    </select>

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

    SCRIPT PER POPOLARE PROVINCE FUNZIONANTE:

    <script language="javascript">

    var ricerca_pro;


    function cerca()
    {
    var valorecampo = document.postad.O1.options[document.postad.O1.selectedIndex].value;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
    ricerca_pro = new XMLHttpRequest();
    ricerca_pro.onreadystatechange = ricevi;
    ricerca_pro.open("GET", "cercaprovince.asp?reg="+valorecampo,true);
    ricerca_pro.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    ricerca_pro = new ActiveXObject("Microsoft.XMLHTTP");
    if (ricerca_pro) {
    ricerca_pro.onreadystatechange = ricevi;
    ricerca_pro.open("GET", "cercaprovince.asp?reg="+valorecampo,true);
    ricerca_pro.send();
    }
    }
    }


    function ricevi() {
    var strRes;
    var arrValori;
    if (ricerca_pro.readyState == 4) {
    strRes=ricerca_pro.responseText;
    arrValori=strRes.split("|");
    document.postad.O2.options.length=0;
    for(i=0;i<arrValori.length;i++)
    {
    document.postad.O2.options[document.postad.O2.options.length]= new Option(arrValori[i].split("|"));
    }
    }
    }
    </script>

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

    SCRIPT PER POPOLARE COMUNI CHE FUNZIONA SOLO CON OPERA E FIREFOX E NON CON IE

    <script language="javascript">

    var trova_pro=false;


    function trova()
    {
    var valorecampo = document.postad.O2.options[document.postad.O2.selectedIndex].value;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
    trova_pro = new XMLHttpRequest();
    trova_pro.onreadystatechange = ricezione;
    trova_pro.open("GET", "cercacitta.asp?provincia="+valorecampo,true);
    trova_pro.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    trova_pro = new ActiveXObject1("Microsoft.XMLHTTP");
    if (trova_pro) {
    trova_pro.onreadystatechange = ricezione;
    trova_pro.open("GET", "cercacitta.asp?provincia="+valorecampo,true);
    trova_pro.send();
    }
    }
    }


    function ricezione() {
    var strRes;
    var arrValori;
    if (trova_pro.readyState == 4) {

    strRes=trova_pro.responseText;
    alert(strRes);
    arrValori=strRes.split("|");
    document.postad.o3.options.length=0;
    for(i=0;i<arrValori.length;i++)
    {
    document.postad.o3.options[document.postad.o3.options.length]= new Option(arrValori[i].split("|"));
    }
    }
    }
    </script>

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    ...
    trova_pro = new ActiveXObject1("Microsoft.XMLHTTP");
    ...
    mispelling
    Vuoi aiutare la riforestazione responsabile?

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58
    Scusa,

    nello scrip è giusto:

    new ActiveXObject("Microsoft.XMLHTTP");

    Il numero "1" non centra

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58
    se puo servire posto anche la pagina cercacitta che riceve la richiesta e invia i dati:


    <%
    OpenDB(connAJAX)
    provincia = Request.QueryString("provincia")
    strsql = "SELECT citta,provincia FROM CITTA WHERE provincia = '"& provincia &"' order by citta desc"
    rsa.open strsql
    primo = 0
    if not rsa.eof then
    do while not rsa.eof

    if primo = 0 then
    primo = 1
    array_comune = rsa("citta")
    else
    array_comune = rsa("citta") & "|" & array_comune
    end if


    rsa.movenext
    loop
    end if

    w(array_comune)

    CloseDB
    %>

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    per IE 6 ActiveXObject("MSXML2.XMLHTTP"), poi per un problema di IE 6 (uno dei tanti) memorizza la chiamata ajax nella cache ho risolto cosi:
    ?noCache=" + new Date().getSeconds() + '' + Math.floor(Math.random() * (9999))+" va inserito nella richiesta, nel tuo caso:
    ricerca_pro.open("GET", "cercaprovince.asp?noCache=" + new Date().getSeconds() + '' + Math.floor(Math.random() * (9999))+"&reg="+valorecampo,true);
    Non è che funzioni
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58
    Purtroppo non funziona con IE , mentre con Opera e Firefox SI .

    "Questo per IE 6 ActiveXObject("MSXML2.XMLHTTP"), "

    devo metterlo al posto di
    ActiveXObject("Microsoft.XMLHTTP") ?

    Ho provato in tutti i due casi
    trova_pro = new ActiveXObject("Microsoft.XMLHTTP");
    oppure
    trova_pro = new ActiveXObject("MSXML2.XMLHTTP");

    MA NON FUNZIONA



    Non riesco a capire, ma non è che si incasina con le due funzioni ?

    Quella delle regioni onchange="cerca()" e quella delle province onchange="trova()", io le ho messe in due paGine separate e le richiamo a inizio pagina con:




    In ogni caso, il fatto che se al posto di var valorecampo = document.postad.O2.options[document.postad.O2.selectedIndex].value;

    SCRIVO

    var valorecampo = "torino";

    Funziona anche su IE e vengono listati tutti i comuni della provincia di Torino

    sIGNIFICA CHE: la funzione invia e riceve il dato correttamente . Il problema e che quando dalle regioni riempio LA SELECT provincie non riesce a vedere questo dato.

    HAi qualche altro consiglio ??

    Non so piu cosa fare

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58
    Per informazione ho messo un alert nella funzione ricezione


    function ricezione() {
    var valorecampoP = document.postad.O2.options[document.postad.O2.selectedIndex].value;
    var strRes;
    var arrValori;
    if (trova_pro.readyState == 4) {

    strRes=trova_pro.responseText;
    alert(valorecampoP);


    e quando varie il campo province mi fa verere la provincia selezionata SU FIREFOX E OPERA mentre su IE , l'alert e NULL.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58
    Scusate ma forse ho trovato il problema, se sostituiso alla riga

    var valorecampo = document.postad.O1.options[document.postad.O1.selectedIndex].value;

    .value con
    .text
    funziona

    il campo che restituisce il db in effetti è un campo testo. Puo dipendere da questo ???



    Vorrei ancora una informazione se possibile poi chiudo, ho visto in molti esempi che creano i diversi oggi in questo modo per IE6 - 5 ECC. del tipo
    --------------------------------------------------------------------
    <script type="text/javascript">
    function getXMLHttpRequestObject() {
    var xmlobj;
    try {
    //Supporto Nativo: Gecko,Opera,IE7,Safari etc
    xmlobj = new XMLHttpRequest();
    } catch(e) {
    try {
    //Supporto ActiveX: IE6
    xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    //Supporto ActiveX: IE5.5,IE5
    xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
    //Ajax non supportato
    xmlobj = null;
    return false;
    }
    }
    }
    return xmlobj;
    }
    </script>

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

    come posso adattarli alla mia funzione

    var trova_pro;


    function trova()
    {


    var f = document.postad;


    var valorecampoP = document.postad.O2.options[document.postad.O2.selectedIndex].text;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
    trova_pro = new XMLHttpRequest();
    trova_pro.onreadystatechange = ricezione;
    trova_pro.open("GET", "cercacitta.asp?provincia="+valorecampoP,true) ;
    trova_pro.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    trova_pro = new ActiveXObject("Microsoft.XMLHTTP");
    if (trova_pro) {
    trova_pro.onreadystatechange = ricezione;
    trova_pro.open("GET", "cercacitta.asp?noCache=" + new Date().getSeconds() + '' + Math.floor(Math.random() * (9999))+"&provincia="+valorecampoP,true);
    trova_pro.send(null);
    }
    }
    }

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.