Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Ajax e asp

  1. #1

    Ajax e asp

    Ciao a tutti,

    ho un problema con un form in una pagina asp le cui informazioni sono veicolate attraverso l'utilizzo di Ajax.
    Mi spiego brevemente.
    Ho tre menù a tendina. Il primo prende informazioni direttamente dalla pagina asp, il secondo, in base alla selezione del primo, viene popolato dai dati provenienti da un'altra pagina asp che viene richiamata appunto attraverso ajax.
    Il problema è che i valori che vengono passati a questo secondo menù a tendita non si vedono in html, quindi quando richiamo nuovamente la pagina ajax per popolare il terzo menù a tendina, non riesco a passarli perchè il menù a tendina risulta essere vuoto.

    Non so se sono riuscito a spiegarmi bene.

    Grazie anticipatamente.

    Ciao

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    A parole si, ma non abbiamo idea di come tu sia arrivato a questo punto... posta il codice che usi o un link alla pagina pubblicata.

    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

    Ecco il codice

    Hai ragione ;-)

    I campi che devo popolare sono:

    Stato --> interrogazione dalla pagina asp principale
    cap --> funziona tranquillamente
    citta --> non va

    Allora questo è lo script con cui richiamo la pagina asp che si chiama cercaprovince.asp e con il quale leggo poi i risultati della chiamata.

    <script language="javascript">

    var ricerca_pro;
    var ricerca_citta;


    function cerca()
    {
    var valorecampo = document.form1.stato.options[document.form1.stato.selectedIndex].value;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
    ricerca_pro = new XMLHttpRequest();
    ricerca_pro.onreadystatechange = ricevi;
    ricerca_pro.open("GET", "cercaprovince.asp?stat="+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?stat="+valorecampo,true);
    ricerca_pro.send();
    }
    }
    }


    function cerca_citta()
    {
    var valorecampo_citta = document.form1.cap.options[document.form1.cap.selectedIndex].value;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
    ricerca_citta = new XMLHttpRequest();
    ricerca_citta.onreadystatechange = ricevi_citta;
    ricerca_citta.open("GET", "cercaprovince.asp?cap="+valorecampo_citta,tru e);
    ricerca_citta.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    ricerca_citta = new ActiveXObject("Microsoft.XMLHTTP");
    if (ricerca_citta) {
    ricerca_citta.onreadystatechange = ricevi_citta;
    ricerca_citta.open("GET", "cercaprovince.asp?cap="+valorecampo_citta,tru e);
    ricerca_citta.send();
    }
    }
    }


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



    function ricevi_citta() {
    var strRes_citta;
    var arrValori_citta;
    if (ricerca_citta.readyState == 4) {
    strRes_citta=ricerca_citta.responseText;
    arrValori_citta=strRes_citta.split("|");
    document.form1.citta.options.length=0;
    for(c=0;c<arrValori_citta.length;c++)
    {
    document.form1.citta.options[document.form1.citta.options.length]= new Option(arrValori_citta[c].split("|"));
    }
    }
    }


    </script>


    Questo è il form che devo popolare

    <form id="form1" method="post" action="prova.asp" name="form1">
    <table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>
    <select name="stato" accesskey="1" tabindex="1" onchange="cerca()">
    <%
    do while not rs.eof
    %>
    <option value="<%=rs("ID_STATE")%>"><%=rs("STATE")%></option>
    <%
    rs.movenext
    loop
    CloseDB
    %>
    </select>
    ciao
    </td>
    <td>
    <label>
    <select name="cap" accesskey="2" tabindex="2" onChange="cerca_citta()">
    </select>
    </label>
    </td>
    <td>
    <label>
    <select accesskey="3" tabindex="3" name="citta">
    </select>
    </label>
    </td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" name="Submit" value="Invia"></td>
    <td></td>
    <td></td>
    </tr>
    </table>
    </form>

    Questa è la pagina cercaprovince.asp

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

    <%
    'apro connessione e istanzio oggetti
    OpenDB(connAJAX)
    stat = Request.QueryString("stat")
    cap = Request.QueryString("cap")

    ' se passo informazioni sullo stato ricerco il cap e lo passo alla pagina principale (funziona)
    if stat <> "" then
    if len(stat) = 1 then stat = "0" & stat
    strsql = "SELECT ZIP_CODE FROM CAP WHERE STATO = '" &stat& "'"
    rs.open strsql
    primo = 0

    if not rs.eof then
    do while not rs.eof

    if primo = 0 then
    primo = 1
    array_cap = rs("ZIP_CODE")
    else
    array_cap = rs("ZIP_CODE") & "|" & array_cap
    end if
    rs.MoveNext
    Loop
    end if

    w(array_cap)
    end if


    ' se passo una variabile sul cap faccio una ricerca sulla città e la passo

    if cap <> "" then

    if len(cap) = 1 then cap = "0" & cap

    strsql = "SELECT CITY FROM CAP WHERE ZIP_CODE = '" &cap& "'"
    rs.open strsql
    primo = 0

    if not rs.eof then
    do while not rs.eof

    if primo = 0 then
    primo = 1
    array_citta = rs("CITY")
    else
    array_citta = rs("CITY") & "|" & array_citta
    end if

    rs.movenext
    loop
    end if
    end if
    w(array_citta)

    CloseDB
    %>


    Qui l'esempio

    http://www.prometeocasa.com/abaton/newcust.asp

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Mi pare che tu non stia ricevendo una riscposta corretta dal server... prova mettendo un alert dopo la ricezione:

    strRes=ricerca_pro.responseText;
    alert(strRes)

    e similmente anche nell'altra funzione.

    Mi sa proprio che il problema e' ASP

    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

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da br1
    Mi pare che tu non stia ricevendo una riscposta corretta dal server... prova mettendo un alert dopo la ricezione:

    strRes=ricerca_pro.responseText;
    alert(strRes)

    e similmente anche nell'altra funzione.

    Mi sa proprio che il problema e' ASP

    ciao
    penso che sia assolutamente necessario, in fase di debug, mettere, come consiglia br1, alert(strRes); e non elemento.innerHTML = strRes, pena errori

    un'altra cosa che posso suggerire è quella di usare i sistemi di gestione eccezioni di asp e restituire, in caso di errore, la sua descrizione al browser.

    Pietro

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.