كائنات XMLHTTP وأساليبها ————————————————————————
يوفر MSXML كائن Microsoft.XMLHTTP، الذي يمكنه إكمال التحويل وإرسال المهام من حزم البيانات إلى كائنات الطلب.
العبارة لإنشاء كائن XMLHTTP هي كما يلي:
قم بتعيين objXML = CreateObject("Msxml2.XMLHTTP") أو
تعيين objXML = CreateObject("Microsoft.XMLHTTP")
أو، بالنسبة للإصدار 3.0 من XMLHTTP، استخدم:
' تعيين xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
بعد إنشاء الكائن، قم باستدعاء الأسلوب Open لتهيئة كائن الطلب. تنسيق بناء الجملة هو:
Poster.open طريقة http، عنوان url، غير متزامن، معرف المستخدم، كلمة المرور
تحتوي الطريقة المفتوحة على 5 معلمات، الثلاثة الأولى ضرورية، والأخيرتان اختياريتان (يتم توفيرهما عندما يتطلب الخادم المصادقة). معنى المعلمات هو كما يلي:
طريقة http: طريقة اتصال HTTP، مثل GET أو POST
url: عنوان URL للخادم الذي يتلقى بيانات XML. عادةً ما يتم تحديد برنامج ASP أو CGI في عنوان URL
غير متزامن: علامة منطقية تشير إلى ما إذا كان الطلب غير متزامن. إذا كان وضع الاتصال غير المتزامن (صحيح)، فلن ينتظر العميل استجابة الخادم؛ وإذا كان الوضع متزامنًا (خطأ)، فيجب على العميل الانتظار حتى يقوم الخادم بإرجاع الرسالة قبل إجراء عمليات أخرى.
معرف المستخدم معرف المستخدم المستخدم لمصادقة الخادم
كلمة المرور كلمة مرور المستخدم، تستخدم لمصادقة الخادم
بعد أن تقوم طريقة الإرسال لكائن XMLHTTP بتهيئة كائن الطلب بالطريقة المفتوحة، قم باستدعاء طريقة الإرسال لإرسال بيانات XML:
الملصق.أرسل بيانات XML
نوع معلمة طريقة الإرسال هو Variant، والذي يمكن أن يكون سلسلة أو شجرة DOM أو أي دفق بيانات. هناك طريقتان لإرسال البيانات: متزامن وغير متزامن. في الوضع غير المتزامن، بمجرد إرسال حزمة البيانات، تنتهي عملية الإرسال، ويقوم العميل بإجراء عمليات أخرى؛ في الوضع المتزامن، ينتظر العميل حتى يقوم الخادم بإرجاع رسالة تأكيد قبل إنهاء عملية الإرسال.
يمكن أن تعكس سمة ReadyState في كائن XMLHTTP تقدم الخادم في معالجة الطلب. يمكن لبرنامج العميل تعيين طريقة معالجة الحدث المقابلة بناءً على معلومات الحالة هذه. وتظهر قيم السمات ومعانيها في الجدول التالي:
وصف القيمة
0 تم إنشاء كائن الاستجابة، لكن عملية تحميل مستند XML لم تنته بعد.
1 تم تحميل مستند XML
2 تم تحميل مستند XML وهو قيد المعالجة.
3 تم تحليل جزء من مستند XML
4 تم تحليل المستند ويمكن للعميل قبول رسالة الإرجاع، ويقوم العميل بمعالجة معلومات الاستجابة بعد تلقي رسالة الإرجاع، ويقوم العميل بإجراء معالجة بسيطة، والتي تكمل بشكل أساسي دورة التفاعل بين C/S. يتلقى العميل الاستجابة من خلال خصائص كائن XMLHTTP:
● ResponseTxt: إرجاع الرسالة كسلسلة نصية؛
● ResponseXML: تعامل مع رسالة الإرجاع كمستند XML، يُستخدم عندما تحتوي رسالة استجابة الخادم على بيانات XML؛
● ResponseStream: تعامل مع الرسالة التي تم إرجاعها ككائن دفق.
يتم إنشاء ملف xml التالي ديناميكيًا ويتم إرساله أخيرًا باستخدام xmlHTTP، وهذا هو المحتوى الموجود في البرنامج النصي لـ JavaScript الخاص بالعميل، بالطبع، يمكنك أيضًا كتابته على الخادم، ولكنك تحتاج إلى تغيير بعض الأشياء وفقًا لذلك: (للرجوع إليها فقط ، فهم استخدامه)
var xmlDoc=new ActiveXObject("MSXML2.DOMDocument");
flag=xmlDoc.loadXML("");
newNode =xmlDoc.createElement("encoding")
MarkNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartMark")
newNode.text=StartMark;
MarkNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndMark")
newNode.text=EndMark;
MarkNode.appendChild(newNode)
newNode =xmlDoc.createElement("التاريخ")
DateNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartDate");
newNode.text=StartDate;
DateNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndDate")
newNode.text=EndDate;
DateNode.appendChild(newNode);
newNode =xmlDoc.createElement("الكمية")
SLNode =xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartSL")
newNode.text=StartShuL
SLNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndSL");
newNode.text=EndShuL
SLNode.appendChild(newNode);
newNode =xmlDoc.createElement("سعر الوحدة")
DJNode =xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("StartDJ")
newNode.text=StartDanJ;
DJNode.appendChild(newNode);
newNode =xmlDoc.createElement("EndDJ")
newNode.text=EndDanJ;
DJNode.appendChild(newNode);
newNode =xmlDoc.createElement("المبلغ")
JENode =xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("StartJE")
newNode.text=StartJinE
JENode.appendChild(newNode)
newNode =xmlDoc.createElement("EndJE")
newNode.text=EndJinE
JENode.appendChild(newNode)
newNode =xmlDoc.createElement("رمز المستودع")
newNode.text=CK;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("رقم التذكرة")
newNode.text=RKPH;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("رمز الوحدة")
newNode.text=CorpName;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("BiaoShi")
newNode.text=Biaoshi
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("FindCate")
newNode.text=FindCate
xmlDoc.documentElement.appendChild(newNode)
فار xh =جديد ActiveXObject("MSXML2.XMLHTTP")
xh.open("POST"،"Find.asp"، خطأ)
xh.setRequestHeader("نوع المحتوى"،"نص/xml")
xh.setRequestHeader("نوع المحتوى"،"gb2312")
xh.send(xmlDoc);
القيمة النصية لكل عقدة جديدة هي متغير، وهي القيمة المدخلة في نموذج العميل الخاص بي.