سؤال:
يوجد عنصر تحكم في نموذج الويب، ومن الأفضل لهذا التحكم الوصول إلى قاعدة البيانات في الوقت الفعلي، وبمجرد حدوث تغييرات في قاعدة البيانات، سيتم إرسال البيانات إلى العميل وسيتم عرض أحدث البيانات.
تحليل:
نظرًا لأن العميل يحتاج إلى التحديث، فيجب استخدام وظيفة الساعة الأمامية لـ js. لقد تغير الخادم، ويحتاج العميل إلى التحديث لتحديث البيانات. كيف يمكنني تحديث البيانات دون تحديث، أو تحديث الصفحة بشكل خاطئ أي أن العميل لا يرى بشكل أساسي أي تحديث.
الحل: (يرجى تصحيحي إذا كان هناك أي أخطاء، مستواي محدود، وشكرا)
هناك حلان رئيسيان: الوقت الحقيقي والاستطلاع
في الوقت الحقيقي: يتم التشغيل عن طريق إضافة مشغل في قاعدة البيانات، ثم كتابة ملف في الخادم لاستخدامه كإشارة. أعتقد أن هذه التكنولوجيا معقدة للغاية بالنسبة لهذه المشكلة، لذلك لم أستمر في دراستها، ويمكن للأصدقاء المهتمين الذهاب إلى MSDN لرؤيتها، ولكن يمكنها بالفعل تحديث البيانات في الوقت الفعلي، وهو أكثر فعالية في الوقت الفعلي. المحادثات.
الاقتراع: 1. استخدم xmlhttp بدون طريقة التحديث. بالنسبة لهذه الطريقة، يمكنك قراءة المقالة التي كتبها الآخرون والتي قمت بإعادة توجيهها سابقًا، والتي تحتوي على مقدمة مفصلة، ولكن بعد اختبارها، وجدت أن ما يتم الحصول عليه من الخادم هو كود HTML الخاص بالصفحة بأكملها احصل على محتوى التحكم الذي تحتاجه منه، ثم كرره، ولا يزال التكوين معقدًا للغاية وغير فعال بالضرورة.
2. استخدم إطار عمل HTML لإكماله، وهي الطريقة التي أكتبها بشكل أساسي. هذه الطريقة بسيطة وسهلة التنفيذ وأعتقد أنها مفيدة جدًا للمواقف التي يتم فيها عرض البيانات الصغيرة فقط ديناميكيًا.
مقدمة تفصيلية: اكتب iframe src="../test/WebForm2.aspx" في المكان الذي يحتاج فيه HTML إلى التحديث. Src هي الصفحة المراد توصيلها، ثم اضبط حجم الإطار وأشرطة التمرير حسب الحاجة.
قم بإنشاء صفحة جديدة WebForm2.aspx كصفحة الاتصال ذات الإطار. ضع عناصر التحكم التي تحتاج إلى تحديث في الوقت الحقيقي في هذه الصفحة، ثم في الحدث Page_Load
يعالج Sub Page_Load (مرسل ByVal كـ System.Object، ByVal e كـ System.EventArgs) MyBase.Load
'ضع الكود للحصول على تحديثات قاعدة البيانات هنا واربطه بعنصر التحكم End Sub
ثم أضف meta HTTP-EQUIV = "Refresh" content = "1" URL = "/test/WebForm2.aspx" إلى HTML
هذا يعني أنه سيتم تحديث هذه الصفحة تلقائيًا كل ثانية واحدة (يمكنك أيضًا إضافة ساعة أمامية مثل window.setInterval(function,1000) وفقًا للحالة الفعلية)، بحيث تكتمل النتيجة بعد بدء الصفحة الأولى ، لن تتم مقاطعة الصفحة الثانية، وسيتم تحديثها بعد فترة من الوقت، ولكن يشعر العميل بنفس الشعور كما لو لم يتم تحديثها.