Qual è la migliore pratica per il passaggio di variabili da una pagina HTML a un'altra?

StackOverflow https://stackoverflow.com/questions/216536

  •  03-07-2019
  •  | 
  •  

Domanda

Sono relativamente nuovo nella programmazione di applicazioni Web, quindi spero che questa domanda non sia troppo semplice per tutti.

Ho creato una pagina HTML con un FORM contenente un datagrid dojox (v1.2) pieno di righe di descrizioni per diversi articoli di drogheria. Dopo che l'utente ha selezionato l'oggetto a cui è interessato, farà clic su " Invia " pulsante.

A questo punto, posso ottenere la funzione javascript per memorizzare il numero ID articolo come variabile javascript MA non so come passare questo ID alla pagina HTML successiva.

Devo semplicemente passare l'ID come parametro della stringa di query URL? Ci sono altri modi migliori?

MODIFICA: l'intero processo è come un carrello. L'utente selezionerà l'elemento dalla griglia e nella pagina successiva compilerà alcuni dettagli e quindi effettuerà il checkout.

Dovrei anche menzionare che sto usando grails, quindi questo sta accadendo in una pagina SPG ma attualmente contiene solo HTML.

È stato utile?

Soluzione

Potresti semplicemente usare un campo di input nascosto; che viene trasmesso come parte del modulo.

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() {
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      }
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>

Altri suggerimenti

È buono, ma è meglio usare un linguaggio di script come JSP, PHP, ASP .... e puoi usare semplici metodi POST e GET.

Il metodo migliore (imho) è includerlo nell'URL

href = " http:? //NewPage.htm var = valore " ;;

encodeUriComponent una stringa Value

Un modo per inviare variabili tramite POST a un'altra pagina consiste nel rendere il collegamento alla pagina successiva un input di invio in un modulo in cui l'attributo action è la pagina di destinazione. Per ogni variabile che possiedi, puoi includere l'utilizzo di input del tipo di attributo "nascosto" in questo modulo, rendendo visibile solo il pulsante.

Un'altra opzione è quella di generare dinamicamente collegamenti sulla pagina con qualcosa come PHP in cui sostanzialmente si ripopolano le query GET correnti.

Infine, puoi sempre memorizzare queste informazioni nell'array PHP $ _SESSION e non devi preoccuparti di passare continuamente queste variabili attraverso la navigazione del sito.

La tua scelta dipenderà dal numero di opzioni di navigazione in cui desideri conservare le stesse variabili. Dipenderà anche dalla sicurezza che vorresti che fosse il tuo back-end e dall'importo che desideri divulgare all'utente Web avanzato.

Se hai solo bisogno dell'ID nelle pagine successive, puoi passare l'id come parametro della stringa di query.

Ma ci saranno momenti in cui è necessario inoltrare più informazioni e passare una varietà di parametri a pagine diverse e dover mantenere set di parametri diversi per pagine diverse può diventare un po 'peloso. In questo caso, ti suggerisco di mantenere un campo nascosto nel modulo e creare un oggetto argomento che memorizzi ciascuno dei tuoi parametri. Serializza l'oggetto argomento con JSON e memorizzalo nel tuo campo nascosto. Invia il modulo al server. Quando viene caricata la pagina successiva, deserializza l'oggetto e recupera i valori necessari.

Supponendo che tu sia limitato all'utilizzo di pagine html, penso che l'approccio migliore sarebbe quello di passare l'id sulla stringa di query alla pagina successiva. È relativamente facile recuperare quel valore dalla stringa di query nella pagina successiva. Se devi essere un po 'più furtivo nel passare la variabile (o se hai bisogno che la variabile persista per più di una pagina), puoi anche impostare un cookie e recuperarlo nella pagina successiva.

Dato che stai provando a farlo in un'applicazione Grails, puoi scegliere di usare l'ambito Flash. Ciò potrebbe non avere alcun senso se si desidera passare direttamente da una pagina HTML alla successiva poiché l'ambito sarebbe definito in un controller. Se non è necessario eseguire alcun tipo di elaborazione tra le richieste, suggerirei di utilizzare un campo modulo nascosto per mantenerlo semplice.

http://grails.org/Controllers+-+Controller+Scopes

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top