Wenn Sie Javascript zum Aufrufen von Webservices unter .net verwenden, müssen Sie Webservice-Verhalten verwenden. Das Folgende ist ein Beispiel zur Erläuterung. Es ist relativ einfach
: 1. Erstellen Sie zunächst einen Webservice, z. B.
<%@ WebService Language="C#" class=MyMath %>
Verwenden des Systems;
Verwenden von System.Web.Services;
öffentliche Klasse MyMath {
[WebMethod]
public int add(int a, int b)
{
gib a + b zurück;
}
[WebMethod]
public int subtract(int a, int b)
{
a - b zurückgeben;
}
}
Dann veröffentlichen Sie es und holen Sie sich zuerst seine WSDL.
2. Zuerst müssen wir die Datei webbehavior.htc herunterladen (Sie können zu http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp gehen.)
Laden Sie es herunter und legen Sie es im aktuellen Verzeichnis Ihres Webs ab. Ändern Sie es dann auf der Seite, auf der Sie Webserice aufrufen möchten
<Körper>
<div id="addservice" style="behavior:url(webservice.htc)"></div>
</body>
Hier benennen wir die Div-ID mit einem aussagekräftigen Namen und geben den Stil als Webservice-Verhalten an. Als nächstes müssen wir Javascript schreiben, um Webserice aufzurufen:
Zuerst rufen wir seinen wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath "); auf.
Verwenden Sie id.useService(WSDLL path, simple naming method);
Die zuvor festgelegte ID lautete addservice. Um dem Client den Aufruf zu erleichtern, haben wir sie MyMath genannt. Um sicherzustellen, dass Webserice korrekt aufgerufen werden kann, muss das Javascript, das Webservice-Aufrufe verarbeitet, sofort im Onload-Ereignis im Body geladen werden, wie folgt
<script language="JavaScript">
Funktion init()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL","MyMath ");
</script>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)">
</div>
</body>
Im obigen Beispiel erhalten wir über das Webservice-Verhalten zunächst die WSDL, die den Webservice zurückgibt. Das Aufrufformat lautet wie folgt: iCallID = id.FriendlyName.callService([CallbackHandler,] „MethodName“ , Param1, Param2, ..);
Hier ist id die ID, die wir im div festgelegt haben, und FridndbyName ist der Name, den wir gerade für den Aspekt benannt haben, hier ist MyMath und CallbackHandler ist der Prozessname der Callback-Funktion. Wenn keine Einstellung vorhanden ist, wird standardmäßig onresult verwendet Um es aufzurufen, wird die Methode zur Verarbeitung verwendet, die im Folgenden erläutert wird, und param1, param2 usw. beziehen sich auf die eingehenden Parameter, wie zum Beispiel:
<SCRIPT language="JavaScript">
// Alle diese Variablen müssen global sein,
// weil sie sowohl in init() als auch in onresult() verwendet werden.
var iCallID = 0;
varintA = 5;
var intB = 6;
Funktion init()
{
// Den Anzeigenamen „MyMath“ für die WebServiceURL festlegen
service.useService("/services/math.asmx?WSDL","MyMath");
// Die folgende Methode gibt keinen Callback-Handler an, daher wird onWSresult() verwendet
iCallID = service.MyMath.callService("add", intA, intB);
}
Funktion onWSresult()
{
// wenn ein Fehler vorliegt und der Aufruf von call() in init() kam
if((event.result.error)&&(iCallID==event.result.id))
{
// Fehlerinformationen aus den Eigenschaften von event.result.errorDetail abrufen
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = event.result.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
// Fügen Sie hier Code zur Behandlung spezifischer Fehlercodes hinzu
}
// wenn kein Fehler aufgetreten ist und der Aufruf von call() in init() kam
sonst if((!event.result.error) && (iCallID == event.result.id))
{
// Zeig die Arithmetik!
alarm(intA + ' + ' + intB + ' = ' + event.result.value);
}
anders
{
alarm("Etwas anderes hat das Ereignis ausgelöst!");
}
}
</SCRIPT>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</body>
Beachten Sie, dass Sie bei Verwendung der onresult-Methode zur Rückgabe die Verarbeitungsmethode im onresult des div-Teils angeben müssen. Hier wird die onWsresult()-Methode verwendet, bei der anhand der zurückgegebenen Informationen ermittelt wird, ob ein Fehler vorliegt. Tritt ein Fehler auf, wird dieser angezeigt.
Wenn Rückrufe verwendet werden, gehen Sie wie folgt vor
<SCRIPT language="JavaScript">
// Alle diese Variablen müssen global sein,
// weil sie sowohl in init() als auch in onResult() verwendet werden.
var iCallID = 0;
varintA = 5;
var intB = 6;
Funktion init()
{
// Den Anzeigenamen „MyMath“ für die WebServiceURL festlegen
service.useService("/services/math.asmx?WSDL","MyMath");
// Im Folgenden wird ein Callback-Handler namens „mathResults“ verwendet.
iCallID = service.MyMath.callService(mathResults, "add", intA, intB);
}
Funktion mathResults(result)
{
// wenn ein Fehler vorliegt und der Aufruf von call() in init() kam
if(result.error)
{
// Fehlerinformationen aus den Eigenschaften von event.result.errorDetail abrufen
var xfaultcode = result.errorDetail.code;
var xfaultstring = result.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
// Fügen Sie hier Code zur Behandlung spezifischer Fehlercodes hinzu
}
// wenn kein Fehler aufgetreten ist
anders
{
// Arithmetik anzeigen
alarm(intA + ' + ' + intB + " = " + result.value);
}
}
</SCRIPT>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)">
</div>
</body>