لقد حظي Ajax بشعبية كبيرة في السنوات الأخيرة، وجوهر Ajax هو XMLHttpRequest، وهو استخدام كائنات XMLHttpRequest من جانب العميل. بالمقارنة مع Ajax، يستخدم XMLHTTP من جانب الخادم كائن XMLHttpRequest من جانب الخادم. على الرغم من أنه من غير الملائم استخدام الطلبات غير المتزامنة على جانب الخادم، كمكون يمكنه إرسال طلبات HTTP على جانب الخادم، فلا ضرر من التعرف عليها.
أنا أتحدث هنا عن استخدام XMLHttpRequest من جانب الخادم في بيئة ASP، واستخدام JScript كلغة للتعليمات البرمجية التوضيحية، لذلك تحتاج إلى فهم ASP وJScript.
يُستخدم عادةً XMLHTTP من جانب الخادم للحصول على صفحات الويب أو أي محتوى آخر من المضيفين البعيدين. تستخدم أنظمة تجميع الأخبار بشكل عام كائنات XMLHTTP من جانب الخادم للحصول على محتوى الخلاصة المراد تجميعها، ثم تستخدم كائنات XMLDOM لتحليل محتوى الملف. يتم بعد ذلك تخزين عناوين الأخبار والمؤلف والمحتوى والمعلومات الأخرى واسترجاعها في قاعدة البيانات، ومن ثم يتم عرض الأخبار من عدة مصادر بيانات معًا. يعد Catch الروبيان بمثابة مجمع أخبار، ولكنه غير مكتوب بلغة ASP :)
في ASP، يمكننا استخدام التعليمات البرمجية التالية لإنشاء كائن ServerXMLHTTP، وهذا الكائن هو الأساس لجميع العمليات التي نقوم بها على جانب الخادم.
انسخ رمز الكود كما يلي:
var xmlhttp = new ActiveXObject(MSXML2.ServerXMLHTTP.5.0);
أولاً، دعونا نلقي نظرة على الطرق الأكثر فائدة لكائن ServerXMLHTTP:
1. إحباط يتم استخدام هذه الطريقة لإلغاء طلبات XMLHTTP. إذا أرسل كائن XMLHTTP طلبًا بشكل غير متزامن، وإذا لم يتم إرجاع الطلب بعد فترة زمنية معينة، فيمكنك استخدام هذه الطريقة لإلغاء الطلب.
2. getAllResponseHeaders القيمة المرجعة لهذه الطريقة هي سلسلة، وهي تعادل رأس طلب HTTP بدون طريقة الطلب ومعلومات URI وإصدار البروتوكول.
3. getResponseHeader يتم استخدام هذه الطريقة للحصول على معلومات الرأس المحددة والأكثر فائدة هي الحصول على نوع المحتوى والمرجع وما إلى ذلك من البيانات التي يتم إرجاعها.
4. open يقوم بتهيئة الطلب باستخدام طريقة الطلب المحددة، وURI، وطريقة المزامنة، ومعلومات المصادقة، وما إلى ذلك.
5. يرسل إرسال طلب HTTP وينتظر استلام بيانات الاستجابة. لاحظ أنه إذا تم إرسال الطلب بطريقة متزامنة، فلن تعود طريقة الإرسال فورًا بعد استدعائها، ولكنها ستنتظر حتى يكتمل الطلب الطلب بطريقة غير متزامنة، سيعود على الفور. بالإضافة إلى ذلك، تحتوي طريقة الإرسال على نص معلمة اختياري يمثل البيانات المراد إرسالها، وهو أكثر فائدة عند استخدام طريقة POST.
6. يقوم setTimeout بتعيين المهلات الأربعة لكائن ServerXMLHTTP، وهي: تحليل اسم المجال، والاتصال بالخادم، وإرسال البيانات، وتلقي الاستجابات. يمكنك التحكم في كائن ServerXMLHTTP عن طريق تعيين فترة المهلة المقابلة لمنع فشل ServerXMLHTTP في العودة في الوقت المناسب والتسبب في توقف البرنامج عن الاستجابة.
7.setRequestHeader يعين رأس الطلب في العميل XMLHttpRequest، وعادة ما يستخدم لتعيين نوع بيانات الطلب، أو تحديد طريقة الطلب، وما إلى ذلك. على سبيل المثال، سيضيف jquery معرف الرأس X-Request-With. للإشارة إلى أن الطلب من كائن XMLHttpRequest الذي تم إصداره لتسهيل قيام الخادم باتخاذ الإجراءات المقابلة.
8. waitForResponse عند إرسال طلب بشكل غير متزامن، يمكنك استخدام هذه الطريقة للتحكم في عملية الطلب. في البرامج النصية من جانب الخادم، لا يمكنك استخدام وظائف رد الاتصال مباشرة للتحكم في الطلبات غير المتزامنة كما يفعل العميل، ولا توجد وظيفة مقابلة لاستخدام البرنامج في وضع السكون لفترة زمنية معينة، لذلك من أجل انتظار الطلب العودة، يمكننا استخدام هذه الطريقة للانتظار لفترة معينة من الزمن.
بالإضافة إلى ذلك، هناك طرق أخرى، مثل getOption، وsetOption، وsetProxy، وما إلى ذلك. نادرًا ما يتم استخدام هذه الطرق، لذلك لن يتم تقديمها هنا، ويمكن للأصدقاء الذين يحتاجون إلى معرفة المزيد الرجوع إلى MSDN.
بعد ذلك، دعونا نلقي نظرة على خصائص كائن ServerXMLHTTP:
1. onreadystatechange وظيفة رد الاتصال عندما تتغير حالة كائن XMLHTTP تضع هذه السمة أساسًا للعمليات غير المتزامنة، مما يسمح للبرنامج بمعرفة ما إذا كانت عملية XMLHTTP قد اكتملت دون الاستعلام عن حالة كائن XMLHTTP.
2. تحتوي حالة كائن ReadyState XMLHTTP على 5 قيم، من 0 إلى 4، والتي تمثل على التوالي:
0 - لم تتم التهيئة، حالة الكائن عندما تم إنشاؤه للتو باستخدام ActiveXObject(MSXML.ServerXMLHTTP.5.0) الجديد
1 - جارٍ التحميل في الوقت الحالي، تم استدعاء الطريقة المفتوحة، ولكن لم يتم استخدام طريقة الإرسال لإرسال البيانات.
2 - تم التحميل بالفعل، وتم استدعاء طريقة الإرسال لإرسال البيانات، ولكن لا يوجد تدفق استجابة متاح حتى الآن.
3 - التفاعل واستقبال البيانات في هذا الوقت، يمكنك استخدام سمات ResponseBody وresponseText للحصول على جزء من البيانات التي تم الحصول عليها.
4 - أكمل الطلب، تم استلام كافة البيانات
عادة، نحتاج فقط إلى تحديد الحالة 4. في هذا الوقت، تم تحميل جميع البيانات، ويمكن الحصول على البيانات المطلوبة باستخدام سمات ResponseBody أو ResponseText.
3. رمز حالة استجابة HTTP، والذي يجب أن يكون 200 في الظروف العادية. إذا كان المورد المطلوب غير موجود، سيتم إرجاع 404. هناك رموز حالة أخرى مثل خطأ الخادم 500، وما إلى ذلك.
4. نص حالة استجابة HTTP الخاص بـstatusText، يُستخدم لوصف معنى رمز حالة الاستجابة، مثل OK في 200 OK، Not Found في 404 Not Found
5. ResponseBody هو مصفوفة بايت من بيانات الاستجابة، ويمكن استخدامه مباشرة في VBScript، ولكنه يحتاج إلى التحويل في JScript.
6. يحصل ResponseText على بيانات الاستجابة في شكل نص
7. تقوم ResponseXML بإرجاع بيانات الاستجابة ككائن XMLDOM، وهو أمر مفيد بشكل خاص عندما تكون البيانات المطلوبة عبارة عن مستند XML.
8. كائن دفق استجابة ResponseStream، هذه السمة غير شائعة الاستخدام