Domanda

Sto usando la funzione document.form.submit () per un modulo di input piuttosto grande (centinaia di campi, è un'applicazione di inventario). Lo chiamo dopo che l'utente è rimasto inattivo per un certo periodo di tempo e vorrei salvare tutti i dati digitati. Quando provo questo, la pagina viene ricaricata (l'azione è #) ma qualsiasi nuovo testo digitato nei campi non viene passato nella RICHIESTA, quindi non riesco a inserirlo nel DB. C'è qualche motivo fondamentale per cui questo accade o il mio codice non sta giocando bene insieme (sto usando la vista griglia EXTJS per mostrare il modulo e una libreria per tenere traccia dei tempi di inattività)? Grazie, Robert

È stato utile?

Soluzione

Immagino di aver inserito la risposta qui. Quello che ho scoperto è che facendo questo:     setTimeout ('frm.submit ();', 2000); ha causato il ricaricamento della pagina ma non ha inviato il modulo. Quando ho fatto questo:     frm.submit (); Il modulo è stato inviato e i dati sono stati passati. Non so perché il primo modo non abbia funzionato, ma non ho bisogno di saperlo :)

Altri suggerimenti

È possibile che il server annulli i valori di input. Indica se la tua pagina sul server è simile al seguente:

<form action="/page.cgi">
  ...
  <input name="Fieldx" value=""/>
</form>

Penso che annullerà il campo. O questo l'azione del server potrebbe averlo impostato indirettamente. In JSF, qualcosa del genere.

<input name="Fieldx" value="#{bean.nullProperty}"/>

Che cosa hai sul server e qual è il tuo browser?

Proverei a catturare la richiesta di post HTML per vedere se i campi di input sono inclusi. Se lo sono, il tuo server ha problemi.

Ma riguardo a quello che hai detto, penso che sia perché ci sono conflitti nel modo in cui il tuo browser gestisce JavaScript DOM. Questo può essere il caso se si omette il pulsante di invio sul modulo e funziona.

Il metodo submit degli oggetti HTMLFormElement dovrebbe semplicemente inviare il modulo, come se l'utente avesse fatto clic sul pulsante di invio. Pertanto, se l'attributo action del modulo è impostato su # , sembrerebbe semplicemente aggiornare la pagina, poiché sta inviando i dati del modulo alla stessa pagina.

Strano che lo faccia ancora quando si imposta l'attributo action su un'altra pagina.

L'attributo method del modulo è impostato su get o post ?

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