كيفية إرسال النموذج مع البيانات قبل تسجيل خروج شخص ما؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا أستخدم الدالة document.form.submit() لنموذج إدخال كبير نوعًا ما (مئات الحقول، إنه تطبيق جرد).أقوم بالاتصال بهذا بعد أن يظل المستخدم خاملاً لفترة معينة من الوقت وأرغب في حفظ أي بيانات كتبها.عندما أحاول ذلك، تتم إعادة تحميل الصفحة (الإجراء هو #) ولكن لا يتم تمرير أي نص جديد مكتوب في الحقول في الطلب، لذلك لا يمكنني وضعه في قاعدة البيانات.هل هناك سبب أساسي وراء حدوث ذلك أم أن الكود الخاص بي لا يعمل بشكل جيد معًا (أنا أستخدم عرض شبكة EXTJS لإظهار النموذج والمكتبة لتتبع وقت الخمول)؟شكرا ، روبرت

هل كانت مفيدة؟

المحلول

أعتقد أنني وضعت الجواب هنا.ما وجدته هو أن القيام بذلك:setTimeout('frm.submit();', 2000);تسبب في إعادة تحميل الصفحة ولكن لم يرسل النموذج.عندما فعلت هذا:frm.submit();تم إرسال النموذج وتمرير البيانات.لا أعرف لماذا لم تنجح الطريقة الأولى، لكن لا أريد أن أعرف ذلك :)

نصائح أخرى

ربما يقوم الخادم بإبطال قيم الإدخال.قل ما إذا كانت صفحتك على الخادم تبدو كما يلي:

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

أعتقد أنه سوف يفرغ من الميدان.أو قد يكون هذا هو إجراء الخادم الذي يقوم بتعيينه بشكل غير مباشر.في JSF، شيء من هذا القبيل.

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

ماذا لديك على الخادم وما هو متصفحك؟

سأحاول الحصول على طلب نشر HTML لمعرفة ما إذا كانت حقول الإدخال مضمنة.إذا كانوا كذلك فإن الخادم الخاص بك لديه مشكلة.

لكن فيما يتعلق بما قلته، أعتقد أن السبب هو وجود تعارض في الطريقة التي يتعامل بها متصفحك مع JavaScript DOM.قد يكون هذا هو الحال إذا تركت زر الإرسال في النموذج الخاص بك ويعمل.

ال submit طريقة HTMLFormElement يجب على الكائنات إرسال النموذج فقط، كما لو أن المستخدم قد نقر على زر الإرسال.لذلك، إذا action تم تعيين سمة النموذج على #, ، يبدو أنه يقوم فقط بتحديث الصفحة، لأنه يرسل بيانات النموذج إلى نفس الصفحة.

من الغريب أنه لا يزال يفعل ذلك عند تعيين سمة الإجراء على صفحة أخرى بالرغم من ذلك.

هل method سمة النموذج المعين ل get أو post?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top