Comment soumettre un formulaire avec des données avant de déconnecter quelqu'un?

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

  •  02-07-2019
  •  | 
  •  

Question

J'utilise la fonction document.form.submit () pour un formulaire de saisie assez volumineux (des centaines de champs, c'est une application d'inventaire). J'appelle ceci après que l'utilisateur a été inactif pendant un certain temps et je souhaite enregistrer toutes les données saisies. Lorsque j'essaie, la page est rechargée (l'action est #) mais tout nouveau texte saisi dans les champs n'est pas transmis dans la demande, je ne peux donc pas le mettre dans la base de données. Y a-t-il une raison fondamentale à cela ou est-ce que mon code ne joue tout simplement pas bien ensemble (j'utilise le mode grille EXTJS pour afficher le formulaire et une bibliothèque pour le suivi du temps d'inactivité)? Merci, Robert

Était-ce utile?

La solution

Je suppose que j'ai mis la réponse ici. Ce que j'ai trouvé était que faire ceci:     setTimeout ('frm.submit ();', 2000); la page a été rechargée mais n'a pas soumis le formulaire. Quand j'ai fait ça:     frm.submit (); Le formulaire a été soumis et les données ont été transmises. Je ne sais pas pourquoi la première méthode n'a pas fonctionné, mais je n'ai pas besoin de savoir cela:)

Autres conseils

Le serveur annule-t-il les valeurs d'entrée? Dites si votre page sur le serveur ressemble à ceci:

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

Je pense que cela annulera le terrain. Ou cela, l'action du serveur peut le définir indirectement. Dans JSF, quelque chose comme ça.

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

Qu'est-ce que vous avez sur le serveur et quel est votre navigateur?

J'essaierais d'attraper la demande de publication HTML pour voir si les champs d'entrée sont inclus. Si tel est le cas, votre serveur a un problème.

Mais en ce qui concerne ce que vous avez dit, je pense que c’est parce qu’il existe un conflit dans la manière dont votre navigateur gère JavaScript DOM. Cela peut être le cas si vous omettez le bouton Envoyer de votre formulaire et que cela fonctionne.

La méthode submit des objets HTMLFormElement doit simplement soumettre le formulaire, comme si l'utilisateur avait cliqué sur le bouton d'envoi. Ainsi, si l'attribut action du formulaire est défini sur # , il semblerait que la page soit actualisée car elle envoie les données du formulaire à la même page.

Étrange qu'il le fasse toujours lorsque vous définissez l'attribut d'action sur une autre page.

L'attribut method du formulaire est-il défini sur get ou post ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top