XMLHTTP.Request - XML Daten vom Server
Sie haben ein eAnwendung und benötigen die Daten im XML Format. Eine schöne Methode, um XML Daten vom Server zu bekommen, bietet die Mehtode über XMLHTTP. In unserem Beispiel verwenden wir eine ASP Seite für die Anfrage der XML Daten und eine Seite, um die Daten zu liefern. Die Methode gleicht einem Sender und einem Empfänger. Wir stellen eine Anfrage und bekommen XML Daten zurück.
Wie gehts und was kostet sowas? Hier kommts und zwar komplett umsonst.
Dazu erstellen wir 2 ASP Seiten.
Zunächst die Anfrage Seite, in der wir mit xmlhttp.open die Anfrage an die empfang.asp Seite senden. Zum Übermitteln verwenden wir die Methode --> GET. Ausgeführt wird die ANfrage mit xmlhttp.send() und die ANtwort holen wir uns mit xmlhttp.responseText, die wir auch gleich in dem DOM laden.
sender.asp
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript> <!-- var rs; var xmldoc; var xmlstream; function getRS_onclick() { rs = new ActiveXObject("ADODB.Recordset"); xmldoc = new ActiveXObject("Msxml2.DOMDocument"); var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp.Open("Get","http://ihrserver/Project1/empfang.asp?getRecordset=YES",false); xmlhttp.send(); xmldoc.loadXML(xmlhttp.responseText); //hier bekommen Sie das Ergebnis des Requests rs.Open(xmldoc); //... das wir nun auch gleich aus dem DOM in ein Recordset laden //--> </SCRIPT> <INPUT type="button" value="Get Recordset" id=getRS name=getRS LANGUAGE=javascript onclick="return getRS_onclick()"> |
So nun brauchen wir schließlich noch unseren Datenlieferant. Hier bleibt alles beim alten. Die Daten holen wir uns in ein Recordset. Beachten Sie allerdings bei rsXML.Save die Daten in XML-Format zu erhalten. (1 ' adPersistXML). Noch was...vergessen sie bitte nicht in ASP-Projekten immer den Verweis auf die msxml.dll zu setzten.
empfang.asp
<% dim cnn dim rsXML Connection = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=SQLSERVER" strSQL = "Select * from Customers" set rs = server.CreateObject("ADODB.Recordset") if Request.QueryString("getRecordset") = "YES" then rsXML.ActiveConnection = Connection rsXML.CursorLocation = 3 'Client Side rsXML.CursorType = 3 'Static Recordset rsXML.LockType = 4 'Batch Optimistic rsXML.Open sql rsXML.Save response, 1 ' adPersistXML Response.End else 'Hier irgendwas schlaues einbauen end if %> |
Viel Spaß!