XMLHTTP-Objekte und ihre Methoden————————————————————————
MSXML stellt das Microsoft.XMLHTTP-Objekt bereit, das die Konvertierung und das Senden von Aufgaben von Datenpaketen an Request-Objekte durchführen kann.
Die Anweisung zum Erstellen eines XMLHTTP-Objekts lautet wie folgt:
Setzen Sie objXML = CreateObject("Msxml2.XMLHTTP") oder
Setze objXML = CreateObject("Microsoft.XMLHTTP")
' Oder verwenden Sie für Version 3.0 von XMLHTTP:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
Nachdem das Objekt erstellt wurde, rufen Sie die Open-Methode auf, um das Request-Objekt zu initialisieren. Das Syntaxformat lautet:
poster.open http-Methode, URL, asynchron, Benutzer-ID, Passwort
Die Open-Methode enthält 5 Parameter, die ersten drei sind notwendig und die letzten beiden optional (bereitgestellt, wenn der Server eine Authentifizierung erfordert). Die Bedeutung der Parameter ist wie folgt:
http-Methode: HTTP-Kommunikationsmethode, z. B. GET oder POST
URL: Die URL-Adresse des Servers, der XML-Daten empfängt. Normalerweise wird das ASP- oder CGI-Programm in der URL angegeben
async: Ein boolesches Flag, das angibt, ob die Anfrage asynchron ist. Im asynchronen Kommunikationsmodus (true) wartet der Client nicht auf die Antwort des Servers; im synchronen Modus (false) muss der Client warten, bis der Server eine Nachricht zurückgibt, bevor er andere Vorgänge ausführt.
userID Benutzer-ID, die für die Serverauthentifizierung verwendet wird
Kennwort Benutzerkennwort, das zur Serverauthentifizierung verwendet wird
Nachdem die Send-Methode des XMLHTTP-Objekts das Request-Objekt mit der Open-Methode initialisiert hat, rufen Sie die Send-Methode auf, um die XML-Daten zu senden:
poster.send XML-Daten
Der Parametertyp der Send-Methode ist Variant. Dabei kann es sich um eine Zeichenfolge, einen DOM-Baum oder einen beliebigen Datenstrom handeln. Es gibt zwei Möglichkeiten, Daten zu senden: synchron und asynchron. Im asynchronen Modus wird der Sendevorgang beendet, sobald das Datenpaket gesendet wurde, und der Client führt andere Vorgänge aus. Im synchronen Modus wartet der Client, bis der Server eine Bestätigungsnachricht zurückgibt, bevor er den Sendevorgang beendet.
Das Attribut „readyState“ im XMLHTTP-Objekt kann den Fortschritt des Servers bei der Verarbeitung der Anfrage widerspiegeln. Das Client-Programm kann basierend auf diesen Statusinformationen die entsprechende Ereignisverarbeitungsmethode festlegen. Die Attributwerte und ihre Bedeutung sind in der folgenden Tabelle dargestellt:
Wertbeschreibung
0 Das Response-Objekt wurde erstellt, aber der XML-Dokument-Upload-Prozess ist noch nicht beendet.
1 Das XML-Dokument wurde geladen
2 Das XML-Dokument wurde geladen und wird verarbeitet.
3 Ein Teil des XML-Dokuments wurde analysiert
4 Das Dokument wurde analysiert und der Client kann die Antwortinformationen akzeptieren. Nach dem Empfang der Antwortnachricht führt der Client eine einfache Verarbeitung durch, die im Grunde einen Interaktionszyklus zwischen C/S abschließt. Der Client erhält die Antwort über die Eigenschaften des XMLHTTP-Objekts:
● ResponseTxt: die Nachricht als Textzeichenfolge zurückgeben;
● ResponseXML: Behandeln Sie die Antwortnachricht als XML-Dokument, das verwendet wird, wenn die Serverantwortnachricht XML-Daten enthält.
● ResponseStream: Behandeln Sie die zurückgegebene Nachricht als Stream-Objekt.
Die folgende XML-Datei wird dynamisch generiert und schließlich mit xmlHTTP versendet. Dies ist der Inhalt des Client-JavaScript-Skripts. Natürlich können Sie ihn auch auf dem Server schreiben, aber Sie müssen einige Dinge entsprechend ändern: (Nur zu Ihrer Information , verstehe es Verwendung)
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("Datum")
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("Menge")
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("Einheitspreis")
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("amount")
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("Warehouse-Code")
newNode.text=CK;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("Ticketnummer")
newNode.text=RKPH;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("Einheitscode")
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)
var xh =new ActiveXObject("MSXML2.XMLHTTP")
xh.open("POST","Find.asp",false)
xh.setRequestHeader("Content-Type","text/xml")
xh.setRequestHeader("Content-Type","gb2312")
xh.send(xmlDoc);
Der Textwert jedes meiner neuen Knoten ist eine Variable, die die Werteingabe in meinem Client-Formular darstellt.