Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: Form, ma come?

  1. #1
    Utente di HTML.it L'avatar di Darcken
    Registrato dal
    Jun 2001
    Messaggi
    237

    Form, ma come?

    Salve a tutti, potete gentilmente farmi capire una cosa???

    Io ho un form semplicissimo. Vorrei mandare i dati compilati dentro al form ad una pagina (che sia asp, aspx o php non penso faccia differenza vero???)

    Ora, visto che il metodo action non si dichiara nella form runat="server", come faccio, nella funzione submit, a puntare alla pagina da me desiderata mandandogli anche i vari valori via post???

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    lo fai con javascript modificando l'action del form e disabilitando il __VIEWSTATE, oppure ti crei un form al volo, con javascript, ti ricopi i campi che ti interessano in hidden, sempre al volo, e fai il submit()
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Darcken
    Registrato dal
    Jun 2001
    Messaggi
    237
    Ciao Pietro.
    Innanzitutto grazie per la risposta, iniziavo a non sperarci più.

    Nelle mie svariate ricerche sul forum avevo letto della soluzione in javascript ma, fiducioso nella tecnologia .net speravo in un sistema più "classico" come l'action, magari definita della Sub del Submit.

    Possibile che non ci sia un modo più semplice per fare un semplice submit via post??? VVoVe:
    Questo te lo chiedo non perchè mi preoccupa implementare javascript, a me personalmente piace molto quindi il problema non si pone, ma perchè mi riesce difficile pensare a .NET (acclamato e riacclamato) che non abbia un metodo banale, visto che .net serve proprio per semplificare la vita da un certo punto di vista, per fare quello che mi serve

    In questo caso risolvo il problema creando una pagina asp/html che mi crei la form dinamica e mi invii il tutto come può servire a me.

    Purtroppo volendo usare dotnet, speravo si poter utilizzare le form date da quest'ultimo, con dei suoi metodi e delle sue sintassi specifiche.

    Se hai qualche altra soluzione sarei più che felice di seguire i tuoi consigli, cosi' come quelli di chiunque altro abbia voglia di darmi una mano in questo "banale" intoppo.

    Grazie ancora per avermi risposto, sei stato + che gentile e disponibile.

    Aperto a qualsiasi altro consiglio in merito, ti auguro buon lavoro

  4. #4
    Puoi "simulare" una richiesta HTTP di un visitatore mediante:
    codice:
    try
            {
                string url = "http://www.miosito.it/pagina.asp";
                WebClient web = new WebClient();
                // aggiungo le variabili da inviare via POST
                web.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                string postData = "var1=0&var2=0&var3=0";
                // invio la richiesta
                byte[] response = web.UploadData(url, "POST", Encoding.ASCII.GetBytes(postData));
                // visualizzo cosa mi è stato risposto
                Response.Clear();
                Response.Write(Encoding.ASCII.GetString(response));
            }
            catch (Exception ex)
            {
                Response.Write("Errore durante la richiesta HTTP: " + ex.Message);
            }
    Devi costruire la string postData con i nomi e i valori delle variabili presenti nel tuo form, dopodiché puoi mettere questo codice nell'evento Click del bottone. Al visitatore (dovrebbe) presentarsi la pagina risultante della richiesta HTTP.

    Avevo scritto questo codice tempo fa.. non ho avuto tempo di controllare ma mi sembra tutto a posto...


  5. #5
    Una cosa: quello che si presenta è il codice HTML della pagina risultante ma sul server dove gira ASP.NET, quindi tutti i collegamenti a immagini o file css saranno rotti se non sono stati impostati in maniera assoluta (es. http://www.miosito.it/immagine.gif e non /immagine.gif)

    Se non è per te necessario visualizzare la pagina ASP/PHP risultante ti consiglio di fare una piccola modifica a quest'ultima o leggerne il codice e visualizzare al visitatore una tua pagina di risposta (senza visualizzare quella remota).

    Spero di essermi fatto capire...


  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    dunque, suppongo di avere una serie di pagine che hanno, sia alcuni pulsanti per fare il postback, sia due pulsanti per andare avanti - indietro nella sequenza di presentazione.
    Daccordo che si può risolvere in modi diversi. Io ho fatto due funzioni per navigare nelle pagine seguenti - precedenti, portandomi indietro dei dati via post.

    codice:
    function avanti() 
    {
    	if(!document.getElementById("h_stack_chiamanti") ) return;
    	var stack = document.getElementById("h_stack_chiamanti").value;
    	var pagina_corrente = "<%=PaginaCorrente()%>";
    	var j = {lista:stack, ultimoelemento:pagina_corrente, separatore:";"};
    	push_lista_stringa(j);
    	document.getElementById("h_stack_chiamanti").value = j.lista;
    
    	//var nuova_pratica = <%=NuovaPraticaJS%>
    	
    	document.Form1.action = "<%=ProssimaPagina%>";
    	if(document.getElementById('__VIEWSTATE')) document.getElementById('__VIEWSTATE').disabled = true;
    	if(document.getElementById('__EVENTTARGET')) document.getElementById('__EVENTTARGET').disabled = true;
    	if(document.getElementById('__EVENTARGUMENT')) document.getElementById('__EVENTARGUMENT').disabled = true;
    	document.Form1.submit();
    	
    }
    
    function indietro() 
    {
    	if(!document.getElementById("h_stack_chiamanti") ) return;
    	var stack = document.getElementById("h_stack_chiamanti").value;
    	var j = {lista:stack, ultimoelemento:"", separatore:";"};
    	pop_lista_stringa(j);
    	if(j.ultimoelemento == "") return;
    	var pagina_precedente = j.ultimoelemento;
    	document.getElementById("h_stack_chiamanti").value = j.lista;
    
    	document.Form1.action = pagina_precedente;
    	if(document.getElementById('__VIEWSTATE')) document.getElementById('__VIEWSTATE').disabled = true;
    	if(document.getElementById('__EVENTTARGET')) document.getElementById('__EVENTTARGET').disabled = true;
    	if(document.getElementById('__EVENTARGUMENT')) document.getElementById('__EVENTARGUMENT').disabled = true;
    	document.Form1.submit();
    
    }
    nota la disabilitazione del __VIEWSTATE, pena errore nella pagina chiamante.

    Se debbo aprire un popup spedendo dati via post, un altro metodo è quello di fare un form al volo, via DOM, riempirlo di hidden creati al volo via DOM etc...


    comunque, :master: non capisco le tue argomentazioni. Qualunque sistema server si usi, sempre html si deve produrre, ed è infine sempre il client che comanda quando devi fare il post.

    ps. bada bene che funziona perchè super collaudato
    Pietro

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ecco altro codice che può servire
    codice:
    /* Questo codice va in un file esterno */
    //-------------------------------------------------------------------------------------
    // crea un form e fa submit passando dati POST
    // utilizzo: 
    // w = window.open("", "popup", "left=100px, top=100px, width=500px, height=400px,");
    // if(w) w.focus();
    // submitData("a.aspx", {nome:'Pietro', numero:'999', data:'15/3/1999'} , "popup");
    //-------------------------------------------------------------------------------------
    function submitData(url, data, target)
    {
    	var form = document.createElement("form");
    	form.action = url;
    	form.target = (target != undefined)? target: "_self";
    	form.method = "post";
    	form.style.display = "none";
    	for(var key in data) addParam(form, key, data[key]);
    	document.body.appendChild(form);
    	form.submit();
    	document.body.removeChild(form);
    }
    
    function addParam(form, key, value)
    {   
        if( typeof(form) == "string") 
            form = document.getElementById(form);
    	
    	var input = document.createElement("input");
    	input.type = "hidden";
    	input.name = key;
    	input.value = value;
    	form.appendChild(input);
    }
    Pietro

  8. #8
    Utente di HTML.it L'avatar di Darcken
    Registrato dal
    Jun 2001
    Messaggi
    237
    Grazie mille ragazzi, provo Tutti gli esempi riportati e vedrò quale si addice meglio al mio caso, nel frattempo mi salvo la discussione che almeno per i primi periodi con dotnet torna sempre utile

    Grazie ancora! troppo troppo gentili

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    per ZofM

    Al codice che hai mandato ho aggiunto come ultima istruzione:

    Response.End()


    e sembra funzionare più che bene.

    Ma dimmi, sostituisce per caso l'istruzione Redirect con la possibilità di spedire dati via POST?

    Pietro

  10. #10
    Originariamente inviato da pietro09
    per ZofM

    Al codice che hai mandato ho aggiunto come ultima istruzione:

    Response.End()


    e sembra funzionare più che bene.

    Ma dimmi, sostituisce per caso l'istruzione Redirect con la possibilità di spedire dati via POST?

    Con qualche aggiunta penso si possa arrivare a ricreare una sorta di Server.Transfer ma su server remoti.. Il Response.Redirect redirige il client alla pagina di destinazione, nel mio caso fa tutto il server e risponde al client con la pagina remota.
    Sarebbe comunque necessario creare del codice di controllo per i link presenti sulla pagina richiamata utilizzando alcune espressioni regolari in modo da completare i link relativi presenti.


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.