วัตถุ XMLHTTP และวิธีการของพวกเขา ————————————————————————
MSXML จัดเตรียมออบเจ็กต์ Microsoft.XMLHTTP ซึ่งสามารถดำเนินการแปลงและส่งงานจากแพ็กเก็ตข้อมูลไปยังออบเจ็กต์คำขอได้
คำสั่งในการสร้างวัตถุ XMLHTTP เป็นดังนี้:
ตั้งค่า objXML = CreateObject("Msxml2.XMLHTTP") หรือ
ตั้ง objXML = CreateObject("Microsoft.XMLHTTP")
' หรือสำหรับ XMLHTTP เวอร์ชัน 3.0 ให้ใช้:
' ตั้งค่า xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
หลังจากสร้างวัตถุแล้ว ให้เรียกใช้เมธอด Open เพื่อเริ่มต้นวัตถุ Request รูปแบบไวยากรณ์คือ:
poster.open วิธี http, url, async, ID ผู้ใช้, รหัสผ่าน
วิธีการเปิดประกอบด้วยพารามิเตอร์ 5 ตัว โดยพารามิเตอร์ 3 ตัวแรกจำเป็น และ 2 ตัวสุดท้ายเป็นทางเลือก (จะมีให้เมื่อเซิร์ฟเวอร์ต้องการการรับรองความถูกต้อง) ความหมายของพารามิเตอร์มีดังนี้:
วิธี http: วิธีการสื่อสาร HTTP เช่น GET หรือ POST
url: ที่อยู่ URL ของเซิร์ฟเวอร์ที่รับข้อมูล XML โดยปกติแล้วโปรแกรม ASP หรือ CGI จะถูกระบุใน URL
async: ธงบูลีนที่ระบุว่าคำขอเป็นแบบอะซิงโครนัสหรือไม่ หากเป็นโหมดการสื่อสารแบบอะซิงโครนัส (จริง) ไคลเอนต์จะไม่รอการตอบสนองของเซิร์ฟเวอร์ หากเป็นโหมดซิงโครนัส (เท็จ) ไคลเอนต์ต้องรอจนกว่าเซิร์ฟเวอร์จะส่งคืนข้อความก่อนดำเนินการอื่น
userID ID ผู้ใช้ที่ใช้สำหรับการรับรองความถูกต้องของเซิร์ฟเวอร์
รหัสผ่าน รหัสผ่านผู้ใช้ ใช้สำหรับการตรวจสอบความถูกต้องของเซิร์ฟเวอร์
หลังจากที่วิธีการส่งของวัตถุ XMLHTTP เริ่มต้นวัตถุคำขอด้วยวิธีเปิด ให้เรียกวิธีการส่งเพื่อส่งข้อมูล XML:
poster.send ข้อมูล 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("การเข้ารหัส")
MarkNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartMark")
newNode.text=เครื่องหมายเริ่มต้น;
MarkNode.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("EndMark")
newNode.text=เครื่องหมายสิ้นสุด;
MarkNode.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("วันที่")
DateNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("วันที่เริ่มต้น");
newNode.text=วันที่เริ่มต้น;
DateNode.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("วันที่สิ้นสุด")
newNode.text=วันที่สิ้นสุด;
DateNode.appendChild (โหนดใหม่);
newNode =xmlDoc.createElement("ปริมาณ")
SLNode =xmlDoc.documentElement.appendChild(โหนดใหม่);
newNode =xmlDoc.createElement("StartSL")
newNode.text=StartShuL
SLNode.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("EndSL");
newNode.text=EndShuL
SLNode.appendChild (โหนดใหม่);
newNode =xmlDoc.createElement("ราคาต่อหน่วย")
DJNode =xmlDoc.documentElement.appendChild(โหนดใหม่)
newNode =xmlDoc.createElement("StartDJ")
newNode.text=StartDanJ;
DJNode.appendChild (โหนดใหม่);
newNode =xmlDoc.createElement("EndDJ")
newNode.text=EndDanJ;
DJNode.appendChild (โหนดใหม่);
newNode =xmlDoc.createElement("จำนวน")
JENode =xmlDoc.documentElement.appendChild(โหนดใหม่)
newNode =xmlDoc.createElement("StartJE")
newNode.text=StartJinE
JENode.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("EndJE")
newNode.text=EndJinE
JENode.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("รหัสคลังสินค้า")
newNode.text=CK;
xmlDoc.documentElement.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("หมายเลขตั๋ว")
newNode.text=RKPH;
xmlDoc.documentElement.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("รหัสหน่วย")
newNode.text=ชื่อบริษัท;
xmlDoc.documentElement.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("BiaoShi")
newNode.text=เบียโอชิ
xmlDoc.documentElement.appendChild (โหนดใหม่)
newNode =xmlDoc.createElement("FindCate")
newNode.text=FindCate
xmlDoc.documentElement.appendChild (โหนดใหม่)
var xh =ใหม่ ActiveXObject("MSXML2.XMLHTTP")
xh.open("POST","Find.asp",false)
xh.setRequestHeader("ประเภทเนื้อหา", "ข้อความ/xml")
xh.setRequestHeader("ประเภทเนื้อหา", "gb2312")
xh.ส่ง(xmlDoc);
ค่าข้อความของ newNode แต่ละรายการของฉันคือตัวแปร ซึ่งเป็นค่าที่ป้อนในแบบฟอร์มไคลเอ็นต์ของฉัน