Come evitare che un form cancelli i campi al momento dell'invio in PHP
Dipende da come si invia il form, e da come è costruita la vostra applicazione web.
Se state usando un pulsante di invio appropriato e il suo comportamento vaniglia, allora lo stato della pagina è perso e dovete proiettare i dati indietro al client. In altre parole, si deve proiettare il modulo con i dati ricevuti dal modulo stesso. Manipolare il modulo con JavaScript come con preventDefault() non funzionerà in questo caso, tranne che per cambiare il comportamento di invio al metodo #2.
In termini molto semplici, qualcosa come questo (non copiatelo, non è di produzione e ha grossi problemi, è solo per illustrare):
- foreach ( as ) {
- echo "" . PHP_EOL;
- }
Tuttavia, molte applicazioni web moderne non funzionano in questo modo. Invece, il modulo viene inviato tramite JavaScript senza aggiornare la pagina, con una chiamata asincrona al server (AJAX). In questo caso, il modulo non dovrebbe essere cancellato per default. Se lo è, assicuratevi che l'evento di invio in JavaScript non ricarichi la pagina o manipoli il modulo, invia solo la chiamata asincrona. Se avete davvero bisogno di cancellare il modulo per far funzionare qualche altra funzione (non riesco a immaginare perché), potete sempre memorizzare i dati del modulo come un oggetto JavaScript e ricostruire il modulo con esso immediatamente dopo aver fatto qualsiasi altra cosa di cui avete bisogno.