Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    identificare POST da form contenente campi con lo stesso nome.

    ciao a tutti,

    ho una questione sul POST di un form.
    se io do ad una serie di oggetti il medesimo nome, ex inserisco in un form tre checkbox che si chiamano pippo, poi dopo il post se sono spuntati tutti e tre al request.form("pippo") mi trovo il valore dei tre checkbox separato da virgola.
    fin qui tutto ok.
    adesso mi sembrava logico poter emulare lo stesso post con xmlhttp tramite una stringa del tipo:

    pippo=valore1,valore2,valore3

    invece di

    pippo=valore1&pippo=valore2&pippo=valore3

    visto che queste due stringe restituiscono de facto lo stesso risultato (almeno visivamente).
    ovviamente non è così. facendo delle chiamate ad una applicazione web di terze parti ho trovato che la seconda chiamata funziona correttamente, mentre la prima no. questo mi fa pensare che all'atto del request.form sia possibile distinguere l'uno dall'altro invio.

    la mia domanda è: come posso distinguere l'uno dall'altro invio (dal punto di vista di chi riceve i dati in post)?

    spero di essermi spiegato.

    è da non dormirci la notte..
    xxx

  2. #2
    Dipende come prelevi i dati. Non vorrei direi una minchiata, ma se recuperi con Request.Form o Request.QueryString quelle variabili, il primo esempio ti restituisce valore1, valore2, valore3, mentre il secondo solo valore3. Insomma il secondo esempio non è corretto.
    Il discorso cambia se inserisci / prelevi questi dati con XML.

    Ciau!
    - Dean

  3. #3
    Originariamente inviato da Atari
    Dipende come prelevi i dati. Non vorrei direi una minchiata, ma se recuperi con Request.Form o Request.QueryString quelle variabili, il primo esempio ti restituisce valore1, valore2, valore3, mentre il secondo solo valore3. Insomma il secondo esempio non è corretto.
    Il discorso cambia se inserisci / prelevi questi dati con XML.

    Ciau!
    - Dean
    no, no, entrambi gli esempi sono corretti e il secondo ritorna, facendo un response.write della request.form, esattamente lo stesso risultato del primo (non è raro in un form tipo datagrid usare checkbox con lo stesso nome, il che equivale via xmlhttp alla chiamata effettuata nel mio secondo esempio).
    cio' che sto cercando di capire (e da quel che ho visto è possibile) è come distinguere nella pagina "chiamata" quando i dati sono stati inviati nell'uno o nell'altro modo.

    xxx

  4. #4
    up
    xxx

  5. #5
    Ok, ho risolto.
    Se servisse a qualcuno, molto banalmente Request.Form è una collection di oggetti (e fin lì..).
    A sua volta, anche Request.Form("nome_campo") è una collection.
    Entrambe le collection menzionate sono 1 based (nel senso che si parte a contare da 1 e non da 0).

    Da quest'esempio si capisce meglio:

    codice:
    <html>
    <body>
    
    <form method="POST">
    	<input type="textbox" name="tb" value="textbox1">
    	
    
    	<input type="textbox" name="tb" value="textbox2">
    	
    
    	<input type="textbox" name="tb" value="textbox3">
    	
    
    	<input type="submit" name="sub" value="invia">
    </form>
    
    <%
    Dim o, f, i
    
    Response.Write ("Request.Form con ciclo 'for each':
    ")
    
    for each f in Request.Form
    	Response.Write ("Oggetti: " & Request.Form(f).Count & "
    ")
    	
    	i = 1
    	
    	For each o in Request.Form(f)
    		Response.Write (f & "[" & i & "] = " & o & "
    ")
    		
    		i = i +1
    	next 'o
    	
    next 'f
    %>
    
    </body>
    </html>
    questo per dire che un campo può essere "richiesto" sia con:

    Request.Form("nome_campo")

    sia con

    Request.Form("nome_campo")(1)

    (con la sola differenza che se nome_campo non è stato inviato viene ritornato un errore).
    Per richiedere il campo che da valore textbox2, dunque, basta richiedere:

    Request.Form("tb")(2)

    boh, vabbé. chissene frega. spero sia utile a qualcuno!

    Ciao,

    Ale
    xxx

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.