¿Cómo enviar un formulario con datos antes de cerrar la sesión de alguien?
-
02-07-2019 - |
Pregunta
Estoy usando la función document.form.submit () para un formulario de entrada bastante grande (cientos de campos, es una aplicación de inventario). Llamo a esto después de que el usuario ha estado inactivo durante un cierto tiempo y me gustaría guardar cualquier información que haya escrito. Cuando intento esto, la página se vuelve a cargar (la acción es #) pero cualquier texto nuevo escrito en los campos no se pasa en la SOLICITUD, por lo que no puedo ponerlo en la base de datos. ¿Hay alguna razón fundamental por la que esto sucede o mi código simplemente no funciona bien (estoy usando la vista de cuadrícula EXTJS para mostrar el formulario y una biblioteca para rastrear el tiempo de inactividad)? Gracias, Robert
Solución
Creo que puse la respuesta aquí. Lo que encontré fue que haciendo esto: setTimeout ('frm.submit ();', 2000); provocó que la página se volviera a cargar pero no envió el formulario. Cuando hice esto: frm.submit (); El formulario fue enviado y los datos fueron pasados. No sé por qué la primera forma no funcionó, pero no necesito saber eso :)
Otros consejos
¿Podría el servidor anular los valores de entrada? Indica si tu página en el servidor tiene este aspecto:
<form action="/page.cgi">
...
<input name="Fieldx" value=""/>
</form>
Creo que anulará el campo. O esto la acción del servidor podría estar configurándolo indirectamente. En JSF, algo como esto.
<input name="Fieldx" value="#{bean.nullProperty}"/>
¿Qué tiene en el servidor y qué es su navegador?
Intentaría capturar la solicitud de publicación HTML para ver si los campos de entrada están incluidos. Si lo están, su servidor tiene un problema.
Pero con respecto a lo que dijiste, creo que es porque hay un conflicto en la forma en que tu navegador maneja JavaScript DOM. Este puede ser el caso si omite el botón de envío en su formulario y funciona.
El método submit
de los objetos HTMLFormElement
debería enviar el formulario, como si el usuario hubiera hecho clic en el botón enviar. Entonces, si el atributo action
del formulario se establece en #
, parecería que actualiza la página, ya que está enviando los datos del formulario al mismo página.
Es extraño que todavía lo haga cuando configura el atributo de acción en otra página.
¿El atributo method
del formulario está configurado en get
o post
?