Si vous utilisez javascript pour appeler un service Web sous .net, vous devez utiliser le comportement du service Web. Ce qui suit est un exemple pour expliquer, c'est relativement simple
1. Tout d'abord, créez un service Web, tel que
<%@ WebService Language="C#" class=MyMath %>
utiliser le système ;
en utilisant System.Web.Services ;
classe publique MyMath {
[MéthodeWeb]
public int ajouter (int a, int b)
{
renvoyer a + b ;
}
[MéthodeWeb]
public int soustraire (int a, int b)
{
renvoyer a - b ;
}
}
Ensuite, publiez-le et récupérez d'abord son wsdl.
2. Tout d'abord, nous devons télécharger le fichier webbehavior.htc (vous pouvez accéder à http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp .)
Téléchargez-le et placez-le dans le répertoire courant de votre web Puis dans la page où vous souhaitez appeler webserice, modifiez-le comme suit.
<corps>
<div id="addservice" style="behavior:url(webservice.htc)"></div>
</corps>
Ici, nous nommons l'identifiant div de manière significative et spécifions le style en tant que comportement du service Web. Ensuite, nous devons écrire du javascript pour appeler webserice :
Tout d'abord, nous appelons son wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath ");
Utilisez id.useService (chemin WSDLL, méthode de dénomination simple) ;
L'identifiant que nous avons défini auparavant était addservice, et afin de permettre au client de l'appeler plus facilement, nous l'avons nommé MyMath. Afin de garantir que le service Web peut être appelé correctement, le javascript qui gère les appels du service Web doit être chargé immédiatement dans l'événement onload dans le corps, comme suit
<langage de script="JavaScript">
fonction initialisation()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL","MyMath ");
</script>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)">
</div>
</corps>
Dans ce qui précède, via le comportement du service Web, nous obtenons d'abord le wsdl qui renvoie le service Web. Ensuite, nous devons effectuer un appel. Le format de l'appel est le suivant : iCallID = id.FriendlyName.callService([CallbackHandler,] "MethodName". , Param1, Param2, ..);
Ici, id est l'identifiant que nous avons défini dans le div, et FridndbyName est le nom que nous venons de nommer pour l'aspect, voici MyMath et CallbackHandler est le nom de processus de la fonction de rappel. S'il n'y a pas de paramètre, la valeur par défaut est d'utiliser onresult. pour l'appeler. La méthode est utilisée pour le traitement, qui sera discuté ci-dessous, et param1, param2, etc. font référence aux paramètres entrants, tels que :
<Langage SCRIPT="JavaScript">
// Toutes ces variables doivent être globales,
// car ils sont utilisés à la fois dans init() et onresult().
var iCallID = 0 ;
varianteA = 5 ;
var intB = 6;
fonction initialisation()
{
// Établit le nom convivial "MyMath" pour le WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// La méthode suivante ne spécifie pas de gestionnaire de rappel, donc onWSresult() est utilisé
iCallID = service.MyMath.callService("ajouter", intA, intB);
}
fonction onWSresult()
{
// s'il y a une erreur et que l'appel provient de call() dans init()
if((event.result.error)&&(iCallID==event.result.id))
{
// Extrait les informations d'erreur des propriétés event.result.errorDetail
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = event.result.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
// Ajoutez du code pour gérer des codes d'erreur spécifiques ici
}
// s'il n'y a pas eu d'erreur et que l'appel provient de call() dans init()
sinon if((!event.result.error) && (iCallID == event.result.id))
{
// Montre l'arithmétique !
alert(intA + ' + ' + intB + ' = ' + event.result.value);
}
autre
{
alert("Quelque chose d'autre a déclenché l'événement !");
}
}
</SCRIPT>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</corps>
Notez que si vous utilisez la méthode onresult pour retourner, vous devez spécifier la méthode de traitement dans le onresult de la partie div. Ici, la méthode onWsresult() est utilisée, dans laquelle les informations renvoyées sont utilisées pour déterminer s'il y a une erreur. Si une erreur se produit, elle s'affiche.
Si des rappels sont utilisés, procédez comme suit
<Langage SCRIPT="JavaScript">
// Toutes ces variables doivent être globales,
// car ils sont utilisés à la fois dans init() et onResult().
var iCallID = 0 ;
varianteA = 5 ;
var intB = 6;
fonction initialisation()
{
// Établit le nom convivial "MyMath" pour le WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// Ce qui suit utilise un gestionnaire de rappel nommé "mathResults"
iCallID = service.MyMath.callService(mathResults, "ajouter", intA, intB);
}
fonction mathResults(résultat)
{
// s'il y a une erreur et que l'appel provient de call() dans init()
si (résultat. erreur)
{
// Extrait les informations d'erreur des propriétés event.result.errorDetail
var xfaultcode = result.errorDetail.code;
var xfaultstring = result.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
// Ajoutez du code pour gérer des codes d'erreur spécifiques ici
}
// s'il n'y a pas eu d'erreur
autre
{
// Afficher l'arithmétique
alert(intA + ' + ' + intB + " = " + result.value);
}
}
</SCRIPT>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)">
</div>
</corps>