Dynamische Aktualisierung von Webseiten mit XMLHTTP

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 893659 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
893659 Dynamic page updates using XMLHTTP
ASP.NET Support Voice-Kolumne

Dynamische Aktualisierung von Webseiten mit XMLHTTP

Um diese Kolumne optimal an Ihre Bedürfnisse anpassen zu können, bitten wir Sie, uns Ihre Vorstellungen und Wünsche zu Themen und Problemen mitzuteilen, die wir in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen behandeln sollten. Anregungen und Feedback können Sie uns mit dem Formular Ask For It (Fragen Sie nach!) senden. Am Ende dieser Kolumne finden Sie einen weiteren Link zu diesem Formular.
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Einführung

Am liebsten untersuche ich die Brauchbarkeit und Benutzerfreundlichkeit von Webanwendungen, indem ich meiner Frau dabei zusehe, wie Sie sich durch eine Website klickt. Sie findet sich gut im Internet zurecht, weiß allerdings nicht so viel über die zugrunde liegenden technischen Vorgänge, die das Ganze zum Laufen bringen (sie nennt das "langweiliges Zeugs").

Neulich sah ich meiner Frau abends dabei zu, wie Sie sich ihren Weg durch die E-Commerce-Anwendung eines großen Anbieters bahnte. Sie arbeitete sich durch eine Menge von Dropdown-Menüs, von denen jedes durch das vorherige gespeist wurde, zu einer Produktliste durch. Beim Anklicken eines Elements in jedem dieser Dropdowns führte die Webseite ein Postback durch, um die Daten für das nächste Dropdown-Menü zu ermitteln. Für sie war das ein ziemlich frustrierendes Erlebnis, weil sie den Eindruck gewann, dass wegen der Postbacks alles unerträglich lange dauerte.

Das Frustrationsniveau hätte durch die Anwendungsentwickler leicht gemildert werden können, wenn diese statt Postbacks XMLHTTP zum Abrufen der Daten verwendet hätten. Darum soll es in der Kolumne dieses Monats gehen. Ich werde Ihnen demonstrieren, wie man XMLHTTP nutzen kann, um Teile einer Webseite auch ohne Postback mit Daten aus einem ASP.NET-Webdienst zu aktualisieren. Sie werden über den Unterschied erstaunt sein. Glauben Sie mir.

Allgemeiner Überblick

XMLHTTP funktioniert in der Weise, dass vom Client eine Anforderung an den Webserver gesendet wird, der dann eine XML-Dateninsel zurückgibt. Je nach der Struktur der empfangenen XML-Daten können Sie diese entweder mithilfe von XSLT oder XML DOM bearbeiten und Teile der Webseite daran binden. Dies ist eine extrem effiziente Methode.

Hinweis: Microsoft bietet eine Webdienst-Methode für Internet Explorer an, die asynchrone Aufrufe an ASP.NET-Webdienste beschleunigt und vereinfacht. Diese Methode wird jedoch nicht unterstützt und ist auch nicht die beste Möglichkeit, eine Webseite asynchron zu aktualisieren. Verwenden Sie stattdessen lieber XMLHTTP!

In dem Beispiel, das ich in dieser Kolumne präsentiere, werden über XMLHTTP drei Webdienstaufrufe an einen ASP.NET-Webdienst gesendet. Der Webdienst fragt die Datenbank "Nordwind" auf dem lokalen SQL-Server ab und gibt dann einen DataSet in Form eines DiffGram an den Client zurück. Anschließend werde ich mithilfe von XML DOM die XML-Daten analysieren und Teile meiner Webseite dynamisch aktualisieren. Und alles ohne jegliches Postback.

Webdienst

Der Webdienst, den ich verwende, hat den Namen "DynaProducts". Es handelt sich dabei um einen einfachen ASP.NET-Webdienst, der in C# geschrieben wurde und die folgenden drei Methoden beinhaltet:
  • GetCategories ? Gibt einen DataSet zurück, der alle Kategorien aus der Tabelle "Categories" (Kategorien) enthält.
  • GetProducts ? Gibt einen DataSet zurück, der alle Produkte der Kategorien enthält, die an die Methode übergeben werden.
  • GetProductDetails ? Gibt einen DataSet zurück, der alle Dateils zu dem Produkt enthält, dessen ProductID an die Methode übergeben wird.

HTML-Seite

Zuerst wird Sie bei diesem Beispiel überraschen, dass die Seite, die ich mithilfe des ASP.NET-Webdienstes aktualisiere, keine ASP.NET-Seite ist. Es ist ganz einfach eine normale HTML-Seite. Ich habe auf der Seite jedoch auch eine gehörige Portion clientseitigen JavaScript eingebaut. Dieses Skript führt die Aufrufe an den Webdienst durch.

Lassen Sie uns nun einen Blick auf das erste Stückchen Code aus der HTML-Seite werfen.
var objHttp;
var objXmlDoc;

function getDataFromWS(methodName, dataSetName, wsParamValue, wsParamName)
{

    // create the XML object
    objXmlDoc = new ActiveXObject("Msxml2.DOMDocument");

    if (objXmlDoc == null)
    {
        alert("Unable to create DOM document!");
        
    } else {

	    // create an XmlHttp instance
	    objHttp = new ActiveXObject("Microsoft.XMLHTTP");
			    // Create the SOAP Envelope
	    strEnvelope = "<soap:Envelope xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
		            " xsd=\"http://www.w3.org/2001/XMLSchema\"" +
		            " soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
		            "  <soap:Body>" +
		            "    <" + methodName + " xmlns=\"http://jimcoaddins.com/DynaProducts\">" +
		            "    </" + methodName + ">" +
		            "  </soap:Body>" +
		            "</soap:Envelope>";
			    // Set up the post
	    objHttp.onreadystatechange = function(){
		        // a readyState of 4 means we're ready to use the data returned by XMLHTTP
	        if (objHttp.readyState == 4)
	        {
		            // get the return envelope
	            var szResponse = objHttp.responseText;
								            // load the return into an XML data island
	            objXmlDoc.loadXML(szResponse);
		            if (objXmlDoc.parseError.errorCode != 0) {
	                var xmlErr = objXmlDoc.parseError;
	                alert("You have error " + xmlErr.reason);
	            } else {
		                switch(dataSetName)
	                {
	                    case "CategoriesDS":
	                        processCategory();
	                        break;
		                    case "ProductsDS":
	                        processProducts();
	                        break;
		                    case "ProductDetailDS":
	                        processProductDetails();
	                        break;
		                }
	            }
		        }
	     }
		    var szUrl;
	    szUrl = "http://dadatop/wsXmlHttp/DynaProducts.asmx/" + methodName;
		    if (wsParamValue != null)
	    {
		        szUrl += "?" + wsParamName + "=" + wsParamValue;
	    }
		    // send the POST to the Web service
	    objHttp.open("POST", szUrl, true);
	    objHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	    objHttp.send(strEnvelope);
	  }
}
Dies ist der größte Codeabschnitt aus der Seite, und ich würde ihn gerne detailliert erläutern, damit Sie verstehen, was hier genau vor sich geht.

Am Anfang des Skriptblocks habe ich zwei Variablen erstellt: objHttp und objXmlDoc. Diese Variablen werde ich für mein XMLHTTP-Objekt und mein XML DOM-Objekt verwenden. Unmittelbar danach folgt eine Funktionsdefinition für die Funktion getDataFromWS. Diese Funktion sorgt für den clientseitigen Aufruf an den Webdienst. Diese Funktion nimmt vier Argumente auf, wovon zwei optional sind:
  • methodName ? Der Name der Methode, die für den Webdienst aufgerufen wird
  • dataSetName ? Der Name für den DataSet, der durch den Webdienst zurückgegeben wird
  • wsParamValue ? Der Wert des Parameters, der (falls anwendbar) an den Webdienst übergeben wird (optional)
  • wsParamName ? Der Name des Parameters, der (falls anwendbar) an den Webdienst übergeben wird (optional)
Lassen Sie uns nun die Funktion getDataFromWS in ihre Einzelteile zerlegen und jeden einzeln erörtern. Hier ist der erste Schnipsel:
// create the XML object
    objXmlDoc = new ActiveXObject("Msxml2.DOMDocument");

    if (objXmlDoc == null)
    {
    		alert("Unable to create DOM document!");

    } else {

		// create an XMLHTTP instance
		objHttp = new ActiveXObject("Microsoft.XMLHTTP");
Dieser Codeblock erstellt das XMLHTTP-Objekt und das XML-Dokumentobjekt. Danach erstelle ich zuerst den SOAP-Umschlag.
// Create the SOAP Envelope
strEnvelope = "<soap:Envelope xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
	          " xsd=\"http://www.w3.org/2001/XMLSchema\"" +
	          " soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
	          "  <soap:Body>" +
	          "    <" + methodName + " xmlns=\"http://jimcoaddins.com/DynaProducts\">" +
	          "    </" + methodName + ">" +
	          "  </soap:Body>" +
	          "</soap:Envelope>";
In diesem Code weise ich den SOAP-Umschlag einer Zeichenfolgenvariablen zu, sodass ich ihn dem Webdienst übergeben kann. Es ist eigentlich ganz einfach, herauszufinden, wie der SOAP-Umschlag für Ihren Webdienst formatiert werden muss. Browsen Sie einfach zu dem Webdienst, und klicken Sie dann auf eine der Methoden, um sich einen SOAP-Umschlag für diese Methode anzeigen zu lassen. Dies sehe ich zum Beispiel, wenn ich zu der Methode GetCategories des Webdienstes wsXMLHTTP browse, den ich für die Zwecke dieses Artikels erstellt habe:

Bild minimierenBild vergrößern
envelope.png


ASP.NET teilt Ihnen mit, wie der SOAP-Umschlag für ein HTTP POST und ein HTTP GET formatiert werden sollte. In dem hier vorgestellten Beispiel verwende ich ein HTTP POST.

So weit, so gut. Lassen Sie uns nun den nächsten Codeabschnitt analysieren.
// Set up the post
objHttp.onreadystatechange = function(){
	// a readyState of 4	means we're ready to use the	data returned by	XMLHTTP
	if (objHttp.readyState == 4)
	{
			// get	the return envelope
		   var	szResponse	= objHttp.responseText;
			   // load	the return into an XML data island
		   objXmlDoc.loadXML(szResponse);
			   if (objXmlDoc.parseError.errorCode != 0) {
			var xmlErr =	objXmlDoc.parseError;
				 alert("You have error " + xmlErr.reason);
	}
	else		{

		switch(dataSetName)
				{
					case "CategoriesDS":
						processCategory();
						break;
					case "ProductsDS":
						processProducts();
						break;
					case "ProductDetailDS":
					processProductDetails();
						break;

				}
			}
Bei einer Anforderung über XMLHTTP verwendet das XMLHTTP-Objekt eine Eigenschaft des Typs readyState, um den Status der Anforderung zu verfolgen. Wenn alle Daten vom Webdienst empfangen wurden, nimmt die Eigenschaft readyState den Wert 4 an. Über die Eigenschaft onreadystatechange für das XMLHTTP-Objekt können Sie eine Rückruffunktion einrichten, die aufgerufen wird, wenn sich der Wert der Eigenschaft readyState ändert. Indem ich sicherstelle, dass die Daten vollständig empfangen wurden, muss ich in Bezug auf diese Daten bis zum Schluss nichts mehr unternehmen.

Nachdem alle Daten empfangen wurden, erstelle ich mithilfe der Eigenschaft responseText eine XML-Dateninsel mit der Antwort. Wie Sie wahrscheinlich wissen, wird die Antwort eines Webdienstes im XML-Format gesendet. In diesem Fall gebe ich einen Microsoft ADO.NET-DataSet zurück.

Der nächste Abschnitt dieses Codeblocks verwendet eine "switch"-Anweisung, um auf der Basis des Namens für den DataSet, der durch den Webdienst zurückgegeben wird, die richtige Funktion aufzurufen. Den Code für diese Funktionen werde ich weiter unten detailliert erläutern.

Lassen Sie uns nun einen Blick auf den Code werfen, der die XMLHTTP-Anforderung letztendlich ausführt.
var szUrl;
	szUrl = "http://dadatop/wsXmlHttp/DynaProducts.asmx/" + methodName;
		if (wsParamValue != null)
	{
		      	szUrl += "?" + wsParamName + "=" + wsParamValue;
	}
	// send the POST to the Web service
	objHttp.open("POST", szUrl, true);
	objHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objHttp.send(strEnvelope);
Aus Klarstellungsgründen enthält die Variable szUrl die URL, die verwendet wird, um den Webdienst aufzurufen. Dann habe ich eine "if"-Anweisung eingebaut, die Parameter verfolgt, die möglicherweise als QueryString-Wert übergeben werden. In Ihrer Umgebung werden Sie die Parameter möglicherweise eher dem SOAP-Umschlag hinzufügen wollen. Beide Möglichkeiten funktionieren gleichermaßen gut.

Danach wird die Open-Methode des XMLHTTP-Objekts aufgerufen. Ich habe die ersten drei Argumente für die Open-Methode verwendet: die Methode, die URL und einen Booleschen Wert, der angibt, ob es sich um einen asynchronen Aufruf handelt oder nicht.
Wichtig: Wenn Sie wie ich hier einen asynchronen Aufruf durchführen, müssen Sie eine Rückruffunktion über die Eigenschaft onreadystatechanged einrichten.

Nachdem der Anforderungsheader für den Inhaltstyp gesetzt ist, sende ich die Anforderung unter Verwendung der Zeichenfolgenvariablen, die ich zuvor gefüllt habe, als SOAP-Umschlag.

Wir sind jetzt den gesamten Code durchgegangen, aus dem die XMLHTTP-Anforderung besteht. Lassen Sie uns jetzt einen Blick auf den Code werfen, der für die Benutzeroberfläche im Browser und die Antwort vom Webdienstaufruf verantwortlich ist.

Zunächst sehen wir uns die Funktion an, die aufgerufen wird, wenn die Seite erstmals geladen wird.
function getCategories()
{

  var func = "getDataFromWS('GetCategories', 'CategoriesDS')";
  document.all.lblCategoryDropdown.innerText = 
"Please wait while data is retrieved...";
  window.setTimeout(func, 1);

  }
Als Erstes erstelle ich in dieser Funktion eine Variable, in der die Funktionssignatur für getDataFromWS gespeichert wird. Dies tue ich, weil ich am Ende dieser Funktion window.setTimeout aufrufen werde, um so die Funktion getDataFromWS aufzurufen. Damit wird ermöglicht, dass dem Benutzer der Status angezeigt wird, während er darauf wartet, dass der Webdienstaufruf abgeschlossen wird. Beachten Sie, dass ich den InnerText einer DIV-Methode (DIV = Data in Virtual) ändere, um eine Meldung anzeigen zu lassen, die darauf hinweist, dass die Daten empfangen wurden. Dann plane ich die Funktion getDataFromWS über den Aufruf window.setTimeout ein und lege fest, dass die Funktion in einer Millisekunde ausgeführt werden soll.

Verarbeitung der Antwort des Webdienstes

Erinnern wir uns, dass ich zuvor über die Eigenschaft onreadystatechanged eine Rückruffunktion konfiguriert habe. Erinnern wir uns außerdem daran, dass die Rückruffunktion eine "switch"-Anweisung enthält, die auf der Basis des DataSet-Namens eine bestimmte Funktion aufruft. In diesem Fall lautet der DataSet-Name "CategoriesDS". Deshalb wird die Funktion processCategory durch die Rückruffunktion aufgerufen. Sehen wir uns nun diese Funktion genauer an, um festzustellen, wie unter Verwendung des XML DOM die Antwort des Webdienstes analysiert wird.
function processCategory()
{

  // get an XML data island with the category data
  objNodeList = objXmlDoc.getElementsByTagName("Categories");
 
  // add default value to the drop-down
  document.forms[0].drpCategory.options[0] = new Option("Select a Category", 0);

  // walk through the nodeList and populate the drop-down
  for (var i = 0; i < objNodeList.length; i++) 
  {
      var dataNodeList;
      var textNode;
      var valueNode;

      dataNodeList = objNodeList[i].childNodes;
      valueNode = dataNodeList.item(0);
      textNode = dataNodeList.item(1);

      document.forms[0].drpCategory.options[i + 1] = 
new Option(textNode.text, valueNode.text);
      document.all.lblCategoryDropdown.innerText = "Select a Category:";
      document.forms[0].drpCategory.style.visibility = "visible";
       
    }

  }
Erinnern wir uns daran, dass die Funktion getDataFromWS XML-Daten aus der Antwort in das Objekt objXmlDoc geladen hat. In der Funktion processCategory nehme ich diese XML-Daten und analysiere sie, um das Dropdown-Menü "Category" (Kategorie) mit Einträgen zu füllen.

Zunächst erstelle ich ein Objekt IXMLDOMNodeList, wobei ich Teile der XML-Antwort verwende. Der vom Webdienst zurückgegebene DataSet wird als DiffGram zurückgegeben. An dieser Antwort interessieren mich im Prinzip nur die Daten aus der DataTable, die ich in den DataSet eingefügt habe. Um mich auf diese Daten zu konzentrieren, erstelle ich ein Objekt IXMLDOMNodeList aus dem XML-Block, der die DataTable enthält.

Wenn Sie sich den Code für den Webdienst ansehen, werden Sie feststellen, dass ich eine DataTable mit dem Namen "Categories" erstelle und diese dem DataSet hinzufüge. Wenn die XML-Daten durch den Webdienst zurückgegeben werden, ist der DataSet in einem Block <CategoriesDS> enthalten und jede Zeile aus der DataTable befindet sich wie in der folgenden XML-Datei in einem separaten Block des Typs <Categories>.

Die folgenden Dateien stehen im Microsoft Download Center zum Download zur Verfügung:
Bild minimierenBild vergrößern
Download
Paket "GetCategories.xml" jetzt downloaden.
Bild minimierenBild vergrößern
Download
Paket "WSXMLHTTP.exe" jetzt downloaden. Weitere Informationen zum Download von Microsoft Support-Dateien finden Sie in folgendem Artikel der Microsoft Knowledge Base:
119591 So erhalten Sie Microsoft Support-Dateien im Internet
Microsoft hat diese Datei auf Viren überprüft. Microsoft hat dazu die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei befindet sich auf Servern mit verstärkter Sicherheit, wodurch nicht autorisierte Änderungen an der Datei weitestgehend verhindert werden.

Ich verwende den folgenden Code, um den XML-Block zu erhalten, der die DataTable enthält:
objNodeList = objXmlDoc.getElementsByTagName("Categories");
Es wird ein Objekt IXMLDOMNodeList zurückgegeben, das alle Knoten des Typs <Categories> beinhaltet. Ich durchsuche dann diese Liste mithilfe einer FOR-Schleife.
// walk through the nodeList and populate the drop-down
  for (var i = 0; i < objNodeList.length; i++) 
  {
      var dataNodeList;
      var textNode;
      var valueNode;

      dataNodeList = objNodeList[i].childNodes;
      valueNode = dataNodeList.item(0);
      textNode = dataNodeList.item(1);

      document.forms[0].drpCategory.options[i + 1] = 
new Option(textNode.text, valueNode.text);
      document.all.lblCategoryDropdown.innerText = "Select a Category:";
      document.forms[0].drpCategory.style.visibility = "visible";
       
    }
Ich weiß bereits, dass jeder Knoten des Typs <Categories> zwei Knoten enthält, die ich benötige: den Knoten <ID> und den Knoten <CategoryName>. Deshalb erstelle ich zunächst ein neues Objekt IXMLDOMNodeList und fülle es mit den untergeordneten Knoten des aktuellen <Categories>-Knotens.
dataNodeList = objNodeList[i].childNodes;
Dann verwende ich die Item-Methode, um auf die beiden Knoten zuzugreifen, die ich benötige, um mein Dropdown-Menü zu füllen. Der erste Knoten enthält das Feld CategoryID aus der Datenbank und der zweite das Feld CategoryName aus der Datenbank. Ich erstelle ein neues Objekt Option, lege den Text auf den Kategorienamen und den Wert auf die Kategorie-ID fest, und füge dieses Objekt dann dem Dropdown-Menü drpCategory hinzu. Bei dem Code für die verbleibenden Funktionen wird die gleiche Methode verwendet, um die benötigten Daten aus der XML-Antwort zu extrahieren und Teile der Webseite zu füllen.

Hinweis: Da wir es hier nur mit kleinen Datenmengen zu tun haben, ist die Verwendung des DOM eine hervorragende Methode zum Extrahieren der benötigten Daten. Bei größeren Datenmengen sollten Sie eventuell XSLT verwenden.

Und So bringen Sie das Ganze zum Laufen

Nachdem wir nun die Details dazu geklärt haben, wie das Ganze funktioniert, möchte ich Ihnen noch erläutern, wie Sie mithilfe der genannten Beispieldateien die Funktionsweise selbst nachvollziehen können.

Bereitstellung des Webdienstes

Entpacken Sie einfach die angehängte Webdienst-Beispieldatei in den Stammordner Ihres Webservers, um den ASP.NET-Webdienst bereitzustellen. Dann müssen Sie den Code für "DynaProducts.asmx" öffnen und die Verbindungszeichenfolge ändern. Sie müssen zumindest das SA-Kennwort eingeben. Nachdem Sie diese Änderung vorgenommen haben, kompilieren Sie den Webdienst neu.

Bereitstellung der HTML-Datei

Die HTML-Datei enthält eine Variable mit dem Namen szUrl, die ihrerseits die URL für den Webdienst enthält. Sie finden diese Variable im unteren Bereich der Funktion getDataFromWS. Sie müssen diese Variable zu der URL für den Webdienst ändern, den Sie im vorstehenden Abschnitt bereitgestellt haben.

Nachdem Sie sowohl den Webdienst als auch die HTML-Datei bereitgestellt haben, browsen Sie zu der HTML-Datei. Wenn die HTML-Datei geladen wird, wird das Dropdown-Menü "Category" (Kategorie) durch die erste XMLHTTP-Anforderung bei dem Webdienst gefüllt. Nachdem dieses Dropdown-Menü gefüllt ist, wählen Sie eine Kategorie aus, um die nächste XMLHTTP-Anforderung auszulösen, die das Dropdown-Menü "Products" (Produkte) füllt. Durch Auswahl eines Produkts aus dem Dropdown-Menü "Products" (Produkte) wird eine Tabelle mit Daten zu dem betreffenden Produkt gefüllt.

Beachten Sie, dass es bei keiner dieser XMLHTTP-Anforderungen zu einem Postback der Seite kommt. Das ist der besondere Vorteil von XMLHTTP-Anforderungen. Wenn ich dieses Verfahren auf eine umfangreiche Webseite angewendet hätte, wäre auch deren Bildlaufposition ohne lästiges "Blinken" für den Benutzer erhalten geblieben. Also wenn Sie mich fragen: Das ist doch wirklich mal eine leistungsfähige Technik!

Eines noch zum Abschluss: In diesem Artikel habe ich XMLHTTP für die Abfrage bei einem Webdienst verwendet. Ich hätte XMLHTTP aber ebenso einfach für eine Abfrage bei einer ASPX-Seite oder einer ASP-Seite einsetzen können. Die praktischen Anwendungsmöglichkeiten dieser Technik sind grenzenlos. Ich hoffe, dass XMLHTTP für Sie zu einem wertvollen Hilfsmittel bei der Entwicklung zukünftiger Webanwendungen wird.
Wie immer haben Sie die Möglichkeit, uns Ihre Vorstellungen und Wünsche zu Themen und Problemen mitzuteilen, die wir in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen behandeln sollten. Verwenden Sie hierzu das Formular Ask For It (Fragen Sie nach!).

Eigenschaften

Artikel-ID: 893659 - Geändert am: Donnerstag, 12. Januar 2006 - Version: 5.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
Keywords: 
kbgraphic kbscript kbxml kbhowto KB893659
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com