51 messaggi dal 15 maggio 2012
Esiste un evento che posso catturare per riconoscere il completamento del submit di una form? Come posso effettuare un redirect ad un'altro url dopo aver catturato l'evento di cui sopra?

Ho fatto questo tentativo attualmente ma non ho avuto successo:

<script type="text/javascript">
function onformsubmit()
{
   setTimeout(function ()
   {
     $(top.document).find('#page').attr('src', 'http://google.it');
   },1000);
}
</script>

<form id="form1" runat="server" onsubmit="onformsubmit()"></form>


La mia prova è stata fatta con javascript ma potrei usare anche vb.

Come mi consigliate di procedere?
Modificato da VincenzoG il 05 agosto 2013 12.13 -
103 messaggi dal 04 ottobre 2010
Se non ti serve fare una redirezione da javascript (che dovrebbe essere tramite window.location=<nuovourl> con javascript secco, con jquery non l'ho mai usato anche se vedo che il tuo codice sembra giusto), puoi controllare dalla pagina alla quale fai il submit, nel code behind sottoscrivendo un evento (solitamente il Page_Load) che possa controllare l'attributo PostBack. Se è un postback, allora c'è stata una chiamata alla sua form, che ha fatto un submit, al che lato server potresti procedere con una Response.Redirect o con un Server.Transfer (controlla il corretto utilizzo di questi due metodi). Altrimenti, se è necessario che sia uno script client a farlo, potresti aggiungere, sempre lato server e sempre dopo il controllo che sia un postback, uno script che dica alla pagina che deve fare un redirect (insomma il server aggiungerà un tag <script> in più se stai in postback). Però con questo secondo metodo la pagina si dovrà comunque ricaricare (ma non necessariamente a livello visivo), per poi portarti da un'altra parte. Tieni presente che, con Server.Transfer hai la possibilità di mantenerti le informazioni originali inviate dal form nella trasferendole in una nuova pagina, cosa che non avviene né con il Response.Redirect (a meno che non ti metti a salvare i dati che ti interessano da qualche parte tipo la Session), nè con l'aggiunta dinamica del tag script.
51 messaggi dal 15 maggio 2012
Biohazard ha scritto:
Se non ti serve fare una redirezione da javascript (che dovrebbe essere tramite window.location=<nuovourl> con javascript secco, con jquery non l'ho mai usato anche se vedo che il tuo codice sembra giusto), puoi controllare dalla pagina alla quale fai il submit, nel code behind sottoscrivendo un evento (solitamente il Page_Load) che possa controllare l'attributo PostBack. Se è un postback, allora c'è stata una chiamata alla sua form, che ha fatto un submit, al che lato server potresti procedere con una Response.Redirect o con un Server.Transfer (controlla il corretto utilizzo di questi due metodi). Altrimenti, se è necessario che sia uno script client a farlo, potresti aggiungere, sempre lato server e sempre dopo il controllo che sia un postback, uno script che dica alla pagina che deve fare un redirect (insomma il server aggiungerà un tag <script> in più se stai in postback). Però con questo secondo metodo la pagina si dovrà comunque ricaricare (ma non necessariamente a livello visivo), per poi portarti da un'altra parte. Tieni presente che, con Server.Transfer hai la possibilità di mantenerti le informazioni originali inviate dal form nella trasferendole in una nuova pagina, cosa che non avviene né con il Response.Redirect (a meno che non ti metti a salvare i dati che ti interessano da qualche parte tipo la Session), nè con l'aggiunta dinamica del tag script.


è più o meno ciò che stavo cercando,mi informerò su questi argomenti, attualmente sono riuscito a risolvere il problema bindando alcuni eventi della pagina (non il page load) che avvengono solo dopo aver fatto il submit (per esempio l'evento che si scatena alla fine di una query), e facendo il redirect. Il mio però lo vedo come una specie di "workaround" e vorrei trovare una maniera piu "standard" di eseguire queste operazioni, quindi proverò i controlli nel pageload come mi hai suggerito.
PS ho abbandonato la strada del clientside visto che se l'utente ha disabilitato javascript non viene reindirizzato...
Modificato da VincenzoG il 06 agosto 2013 12.33 -
103 messaggi dal 04 ottobre 2010
Il Page_Load è un esempio, non esiste un formalismo vero e proprio di quando fare il redirect, se non il classico "appena puoi senza fargli fare altre operazioni inutili". Se esegui query e devi prenderne i dati prima di fare il redirect, allora è normale che se la raccolta dati è l'ultima cosa da fare, il redirect lo metti subito dopo.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.