استخدم التحقق من صحة Ajax مع إرسال جافا سكريبت في نافذة nyroModal المشروطة

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

سؤال

لدي نموذج (signup.php) ينبثق في نافذة nyroModal عندما أقوم بالنقر فوق زر:

<input value="Edit" class="nyroModal" type="button" href="signup.php">

أرغب في استخدام أحد أشكال التحقق من صحة AJAX (للتحقق مما إذا كان اسم المستخدم قد تم أخذه، على سبيل المثال) قبل إرسال النموذج.

كان لدي ما يلي في الاعتبار:عندما ينقر المستخدم على زر "إرسال".فإنه يستدعي وظيفة جافا سكريبت مع onClick الذي يرسل الحقول المطلوبة إلى برنامج PHP النصي، والذي يُرجع ما إذا كانت الحقول صالحة أم لا.وبعد ذلك، إذا كان الحقل غير صالح، فإنه يقوم بإعلام المستخدم، ولكن عندما يكون الحقل صالحًا، فإنه يرسل النموذج عبر شيء مثل $('#formid').submit();.من السهل بما فيه الكفاية من الناحية النظرية.

لكن

تكمن المشكلة في أنه عندما يحصل nyroModel على النموذج الجديد من عنوان URL، ويقوم بإنشاء div في DOM بالمحتويات الموجودة فيه، يتجاهل Firefox تمامًا أي نموذج. <script> العلامات.باستخدام Firebug، أستطيع أن أرى أنه يحصل بالفعل على <script> العلامات مع الاستجابة، لكن Firefox يتجاهلها.أيضًا، لا يمكنني إنشاء وظيفة jQuery على الصفحة التي تم استدعاء النموذج منها، لأنه عند إنشاء المستند، لا يكون النموذج موجودًا في DOM بعد.

هل توجد أية أفكار لحل هذا؟

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

المحلول

حاول إضافة معالج إرسال إلى النموذج:

onClick='return frmSubmit()'

في هذا المعالج، عليك أولاً إجراء تسلسل لبيانات النموذج وإرسالها إلى البرنامج النصي للتحقق من الصحة.تأكد من return false بعد إصدار الطلب، حيث يتم ذلك بشكل غير متزامن.في رد اتصال الاستجابة، يمكنك تنفيذ ما يلي:إذا كانت الاستجابة تشير إلى أن الإدخال صالح، فيمكنك إرسال النموذج برمجيًا باستخدام ملف .submit()-طريقة.ومع ذلك، إذا كان الرد يشير إلى وجود خطأ ما (سيتعين عليك تقديم التعليقات بتنسيق JSON)، فأرفق بعض التعليقات البناءة بالنموذج ليقرأها المستخدم.

لا تنس التقاط حدث الضغط على المفتاح، ومنع إرسال النموذج عند الضغط على Enter، لأنه سيتجاوز وظيفة التحقق من الصحة.

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

نصائح أخرى

يمكنك استخدام شيء مثل:

onClick='javascript: return myValidationFuncion()

حيث ستتحقق وظيفتك ما إذا كانت القيمة صالحة ، أيقم بإجراء مكالمة خدمة الويب الخاصة بك هناك.إذا كانت القيم غير صالحة، فما عليك سوى إرجاع خطأ لإيقاف التنفيذ.

ك

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