Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    21

    Esercizio Campi Nascosti: tutto su una pagina

    Saluti,
    mi sono fatto un esercizio con i Campi Nascosti su 3 pagine.

    Pag.A: c'è una Form con 1 Casella Testo (Txt1), con metodo Post chiama Pag.B

    Pag.B: c'è una Form con 1 Casella Testo Nascosta, con metodo Post chiama Pag.C
    La Casella Testo Nascosta ha il valore prelevato dalle Caselle della Pag.A:
    <input name="nTxt1" type="hidden" value="<%=Request.Form("Txt1")%>">

    Pag.C: deve visualizzare il valore memorizzato dal Campo Nascosto
    Hai inserito: <%=Request.Form("nTxt1")%>

    Ora vorrei che tutto l'esercizio fosse "raggruppato" in un'unico file .asp in modo che Pag.A inizialmente presenta il Form con la Casella di Testo, l'utente ci scrive dentro, Invia, la pagina si aggiorna e visualizza ciò che l'utente ha scritto dentro. Il tutto usando Campi Nascosti.

    Ciò che mi mette in crisi è lo stato della Pag.A che è doppio: c'è una situazione iniziale ed una diversa che si "scatena" dopo l'invio dati.

  2. #2
    Lo stato di chiamata della pagina lo intercetti con la serverVariables("REQUEST_METHOD") che puo dare POST o GET
    A questo punto ti fai una variabile boolean
    codice:
    submit = request.serverVariables("REQUEST_METHOD") = "POST"
    
    if submit then
    ' la pagina è stata chiamata con un post da FORM
    else
    ' la pagina è stata chiamata via GET (form con GET o url tradizionale)
    end if

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    21
    Ho cercato di seguire il tuo codice, all'inizio quando mando in esecuzione la pagina viene visualizzato il ramo Else (quindi la Form), ma poi quando l'utente clicca su Invia resta sulla Form, insomma sembra che lo stato Post non venga passato.
    Sai dove sbaglio?

    <%
    submit = Request.ServerVariables("REQUEST_METHOD=POST")
    If Submit Then
    %>

    <form id="form2" name="form2">
    <input name="nTxt1" type="hidden" id="nTxt1" value="<%=Request.Form("Txt1")%>" />
    </form>
    <%=Request.Form("nTxt1")%>

    <% Else %>

    <form id="form1" name="form1" method="post" action="CampiNascosti.asp">
    Inserisci valore: <input name="txt1" type="text" id="txt1" />
    <input type="submit" name="Submit" value="Invia" />
    </form>

    <% End If %>

  4. #4
    Noti qualche differenza tra come ho scritto io la riga
    codice:
    submit = request.serverVariables("REQUEST_METHOD") = "POST"
    e come l'hai scritta tu
    codice:
    submit = Request.ServerVariables("REQUEST_METHOD=POST")
    ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    21
    Pensavo fosse la stessa cosa, chiedo scusa anche se in verità non capisco bene cosa cambi !

    Ora ho un altro problema, con l'uso dei Campi Nascosti non riesco a farlo funzionare (mi dà pagina bianca dopo il clic su "Invia"), ma se non ne faccio uso in verità l'esercizio funziona....

    <%
    submit = Request.ServerVariables("REQUEST_METHOD") = "POST"
    If Submit Then
    %>

    <%=Request.Form("Txt1")%>

    <% Else %>

    <form id="form1" name="form1" method="post" action="CampiNascosti.asp">
    Inserisci valore: <input name="Txt1" type="text" id="txt1" />
    <input type="submit" name="Submit" value="Invia" />
    </form>

    <% End If %>

    A questo punto mi chiedo...ha senso usare i Campi Nascosti (o anche le Sessioni, o anche i Cookies...) in queste situazioni? E volendo "forzare" l'uso dei Campi Nascosti dove dovrei scriverli?

  6. #6
    L'uso dei campi nascosti serve per ovviare all'utilizzo dei cookies e delle session, ma prevede che sul client ci siano i javascript attivi.

    Non capisci bene cosa cambia?
    beh, è semplice: submit è true quando la serverVariables("REQUEST_METHOD") è uguale a "POST".

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    21
    Ok il concetto mi è chiaro, grazie, anche se non capisco a questo in quale ambito potrebbe essere utile scrivere
    Request.ServerVariables("REQUEST_METHOD=POST")

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

    Se io devo spiegare a qualcuno che non ha mai visto ASP il concetto del carrello della spesa (era la situazione iniziale, ovvero le 3 pagine diverse) posso farlo usando CampiNascosti, Session, QueryString o Cookies.

    E' corretto fare poi come ho postato successivamente, ovvero, se riduco tutto su una pagina posso fare a meno dei metodi di "meorizzazione" dei valori che vengono scritti nelle form perchè già così funziona?

    <%
    submit = Request.ServerVariables("REQUEST_METHOD") = "POST"
    If Submit Then
    %>

    <%=Request.Form("Txt1")%>

    <% Else %>

    <form id="form1" name="form1" method="post" action="carrello.asp">
    Inserisci valore: <input name="Txt1" type="text" id="txt1" />
    <input type="submit" name="Submit" value="Invia" />
    </form>

    <% End If %>

  8. #8
    Se tu vuoi che una sola pagina si comporti in maniera differente, seguendo una logica di passaggi sequenziali, puoi usare un campo nascosto che passa un valore numerico che identifica lo step da seguire.
    Ti faccio un esempio con un campo hidden di nome step che passa come value, a seconda dello step, 1, 2 oppure 3.
    codice:
    <%
    thisPage = request.serverVariables("PATH_INFO") 
    ' contiene il percorso a questa stessa pagina in modo da rendere dimanico l'action della form
    ' così se cambio nome alla pagina, la form contienerà a puntare sempre verso se stessa.
    
    iStep = request.form("step")
    if len(iStep) > 0 and isNumeric(iStep) then
      iStep = cLng(iStep)
    else
      iStep = 1
    end if
    
    txt1 = request.form("Txt1")
    
    if iStep < 1 or iStep > 3 then iStep = 1 
    ' verifico che il valore di step non vada oltre i valori 1, 2 oppure 3
    
    if iStep = 1 then
    ' qui metto la form iniziale e aggiungo il campo hidden per passare come step il valore 2
    %>
    <form method="post" action="<%=thisPage%>">
    Inserisci il valore <input type="text" name="Txt1" /> 
    <input type="hidden" name="step" value="2" />
    <input type="submit" value="invia" />
    <%
    elseIf iStep = 2 then
    ' qui metto la form che riceve i dati dalla prima form e riceve 2 
    ' come valore dal campo hidden di nome step
    %>
    <form method="post" action="<%=thisPage%>">
    Valore inserito <%=txt1%> 
    <input type="hidden" name="Txt1" value="<%=txt1%>" /> 
    <input type="hidden" name="step" value="3" />
    <input type="submit" value="procedi" />
    <%
    elseIf iStep = 3 then
    ' passiamo allo step 3 e facciamo un esempio che il valore inserito allo step 1 
    ' venga moltiplicato per un valore prefissato: 5
    
      valoreFisso = 5
      
      if isNumeric(txt1) then
        txt1 = cLng(txt1)
        risultato = txt1 * 5
    %>
    Il risultato della moltiplicazione tra <%=txt1%> e <%=valoreFisso%> è <%=risultato%>
    <%
      else
        response.write "Hai inserito un valore non numerico"
      end if
    
    end if
    %>
    E' un esempio che dovrebbe renderti chiara l'idea su come operare.

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.