موصى به: ASP Controls 6 رموز كلاسيكية جدًا لقاعدة بيانات XML رقم 1-إنشاء بيانات قاعدة بيانات XML.xml <؟
7.2.4 خطأ نص العميل
حتى الآن ، تعلمنا عن الأخطاء من ASP. ومع ذلك ، غالبًا ما يتم استخدام ASP لإنشاء صفحات ويب تحتوي على برامج نصية عميل. إذا لم يتم تعيين عنصر <script> الذي يحتوي على رمز العميل على سمة Runat = Server ، فلن يفكر ASP في الخادم ونقل معلومات صفحة الويب إلى العميل دون تغييره.
لذلك ، إذا تم فتح صفحة ويب ASP وعرض مربع حوار خطأ في المتصفح ، فلن تبحث عن أخطاء في رمز برنامج ASP على جانب الخادم. لا يمكن للمتصفح رؤية رمز برنامج ASP ، لذلك لا يمكنه التعرف على أي أخطاء. إذا ظهر مربع حوار على العميل ، فيجب أن يكون هناك خطأ في رمز العميل.
1. خطأ بناء الجملة
إذا كان هناك خطأ في بناء الجملة في رمز برنامج العميل على صفحة الويب ، فسيواجه المتصفح الخطأ المقابل عند تنزيل البرنامج النصي على العميل. على الرغم من أنه لا يزال من الممكن تحميل المحتوى الموجود في صفحة الويب بشكل طبيعي (ما لم يتم تحميله ديناميكيًا بواسطة رمز نص العميل) ، فإن صفحة الويب تتوقف عن التنفيذ. سيشاهد المستخدم مربع حوار يحتوي على تفاصيل الخطأ ، أو رسالة حالة تشير إلى أن صفحة الويب تحتوي على الخطأ.
تميل المتصفحات الحديثة إلى إخفاء تفاصيل أخطاء البرنامج النصي على الويب ، وعرض فقط أيقونة خطأ صغيرة على شريط الحالة. في IE 4.0 و IE 5.0 ، يمكن تنشيط مربع حوار الخطأ العادي من خلال صفحة الحوار المتقدمة لخيارات الإنترنت ، كما هو موضح في الشكل 7-14:
الشكل 7-14 شاشة إعدادات الصفحة المتقدمة
يشبه التعامل مع أخطاء العميل في رمز برنامج البرمجة النصية تلك الموجودة على جانب الخادم وعادة ما تكون أسهل لأنه يمكن غالبًا تنزيل صفحات الويب مباشرة من دليل الخادم بالنقر المزدوج. بشكل عام ، ليست هناك حاجة للحصول على صفحات الويب من خلال خوادم الويب و HTTP لمراقبة النتائج في المتصفح. الفرق الوحيد هو أن بعض تفاعلات الخادم تتم عن طريق البرامج النصية للعميل ، مثل ربط البيانات أو التحميل الديناميكي باستخدام RDS.
2. وقت التشغيل أو الخطأ الدلالي
في البرامج النصية للعميل ، قد تواجه غالبًا أخطاء بناء الجملة ، وأخطاء في وقت التشغيل أو الدلالي. في الواقع ، هذه الظاهرة شائعة جدًا على جانب العميل. نظرًا لأن العميل لا يمكنه التحكم في بيئة البرنامج النصي مثل جانب الخادم ، فليس من المؤكد ما يعمله المستخدم على جهازه. في الواقع ، يمكن للخادم الحصول على الموقف العام فقط من بعض المكونات مثل قدرات المتصفح.
لذلك ، من المحتمل ألا تعمل برامج البرمجة النصية التي تستخدم كائنات العميل أو الإصدارات الخاصة من لغات البرمجة النصية والخصائص بشكل صحيح. ومع ذلك ، فإن التعامل مع أخطاء العميل يشبه أخطاء معالجة الخادم.
3. رمز برنامج العميل الذي تم إنشاؤه على الخادم
عند حدوث خطأ ، كاستثناء خاص لقواعد صفحة خطأ ASP (حول مكان حدوث الخطأ) المقابل لقواعد صفحة خطأ ASP هو استخدام رمز برنامج ASP لإنشاء رمز برنامج العميل ديناميكيًا على الخادم. على سبيل المثال ، قد ترغب في تنفيذ عمليات التقييم في ASP ثم نقل البيانات إلى رمز البرنامج النصي الذي يعمل على العميل. أسهل طريقة هي إدخال البيانات في رمز البرنامج النصي كمتغير:
<٪
احصل على اسم الخادم الخاص بنا من مجموعة ServerVariables
StrServerNameInasp = request.servervariables (server_name)
٪>
<لغة البرنامج النصي = jscript runat = client>
<!- إخفاء الرمز من المتصفحات القديمة
var StrServerName = <٪ = strServerNameInasp ٪> ؛
...
التنبيه (اسم الخادم هو: "strserverName) ؛
...
// توقف عن إخفاء الكود
->
</script>
على العميل ، بعد معالجة ASP هذه الصفحة ، ما ستحصل عليه هو:
<لغة البرنامج النصي = jscript runat = client>
<!- إخفاء الرمز من المتصفحات القديمة
var StrServerName = wroxbox ؛
...
التنبيه (اسم الخادم هو: "strserverName) ؛
...
// توقف عن إخفاء الكود
->
</script>
يمكن تجاهل سمة Runat = Client ، ولكن إضافة هذا العنصر يمكن أن يجعله أكثر وضوحًا عند عرض صفحة الويب ASP حيث يتم تشغيل الرمز.
وبهذه الطريقة ، إذا كنت ترغب في إضافة البيانات من قاعدة بيانات جانب الخادم إلى صفيف عميل في موقع معين ، فيمكنك استخدام البرنامج التالي لتنفيذها:
<لغة البرنامج النصي = jscript runat = client>
<!- إخفاء الرمز من المتصفحات القديمة
var arrbooks = فهرس جديد (10) // أعلى فهرس متاح
<٪ 'بداية معالجة ASP
intindex = 0
افعل بينما {ليس في نهاية بعض مجموعة السجلات}
strtitle = {الحصول على العنوان من سجل قاعدة البيانات}
استجابة. write arrbooks [& cint (intindex) &] = '_
& strtitle & '؛ & VBCRLF
intindex = intindex 1
{الانتقال إلى السجل التالي في قاعدة البيانات}
حلقة
...
افعل شيئًا هنا على العميل مع مجموعة من عناوين الكتب
...
// توقف عن إخفاء الكود
->
</script>
ينشئ رمز العميل الذي تم إنشاؤه بواسطة رمز برنامج ASP من جانب الخادم مجموعة من عناوين الكتب عند تشغيل العميل. يظهر خطأ نص العميل الذي يتم إنشاؤه في وقت واحد في مربع حوار خطأ المتصفح. سبب الخطأ هو أن المصفوفات التي تحمل اسم Arrbooks يتم إنشاؤها بواسطة رمز JavaScript عند التشغيل على العميل ويمكنهم قبول 9 عناوين الكتب فقط ؛ على الرغم من أن الرمز من جانب الخادم يمكن أن ينشئ على الأرجح أكثر من 9 عناوين كتب ، والذي يتم تحديده من خلال عدد السجلات في قاعدة بيانات المصدر. هذا يعادل رمز العميل التالي:
<لغة البرنامج النصي = jscript runat = client>
<!- إخفاء الرمز من المتصفحات القديمة
var arrbooks = فهرس جديد (10) // أعلى فهرس متاح
arrbooks [0] = 'javaScript الفوري' ؛
arrbooks [1] = 'Professional ASP 3.0 Programming' ؛
Arrbooks [2] = 'Ado 2.5 Reference Programers' ؛
...
إلخ
...
arrbooks [9] = 'تقنيات ASP لمشرفي المواقع' ؛
arrbooks [10] = 'مرجع مبرمجي ASP' ؛ // <- خطأ من جانب العميل يحدث هنا
arrbooks [11] = 'Adsi CDO Programming' ؛
arrbooks [12] = 'Professional MTS و MSMQ Programming' ؛
...
افعل شيئًا هنا على العميل مع مجموعة من عناوين الكتب
...
// توقف عن إخفاء الكود
->
</script>
يمكن أن تعمل هذه الصفحة فقط بشكل صحيح بعد التصحيح. يمكن زيادته عن طريق زيادة حجم الصفيف أو عن طريق التحكم في عدد السجلات من قاعدة البيانات.
7.3 منع الأخطاء
لقد رأيت بعض الأنواع المختلفة من الأخطاء التي يمكن أن تحدث أعلاه ، وأشعر أنني أبحث عن أخطاء. فيما يلي بعض الاعتبارات حول كيفية تجنب إدخال الأخطاء في البرامج. على الرغم من أنه ليس مضمونًا أن يكون البرنامج مكتوبًا خاليًا من الأخطاء ، إلا أن العديد من التقنيات الملخصة هنا ملخصة.
مشاركة: كيفية تحويل صفحات الويب الديناميكية ASP إلى صفحات ثابتة HTM منذ بعض الوقت ، كانت صفحة ASP بطيئة للغاية في التنفيذ ، مع الكثير من الزوار ، ولم يتم تعديلها بشكل متكرر ، لذلك كان من الكسول جدًا الوصول مباشرة. في كل مرة اضطررت إلى تنزيلها من الخادم لتعديله ، اضطررت إلى إيجاد طريقة لتحويل صفحة ASP إلى صفحة ثابتة HTM. لقد رأيت هذا من قبل