Comment appeler le service WCF à l’aide des fonctions jQuery ajax

J’ai créé un service WCF simple et l’a ajouté à l’application ASP.NET MVC.

Le service a une seule méthode RepeatSsortingng:

[OperationContract] public ssortingng RepeatSsortingng(ssortingng s, int times) { ssortingng result = ""; for (int i = 0; i < times; ++i) { result += s; } return result; } 

J’ai essayé d’appeler cette méthode à partir d’une vue (.cshtml) en utilisant les méthodes post et get:

 function callAjaxService1() { $.post("~/AjaxService1.svc/RepeatSsortingng", {s : 'Test', times : 12}, function(data) { alert('data from service'); }, 'json'); } function callAjaxService1() { $.get("~/AjaxService1.svc/RepeatSsortingng", {s : 'Test', times : 12}, function(data) { alert('data from service'); }, 'json'); } 

mais ni a réussi.

Y at-il quelque chose que je devrais changer dans la décoration des opérations de service WCF ou est-ce que j’utilise mal jQuery.get / post?

Je penserais à quelque chose comme ça …

service d’interface wcf

 [OperationContract] [WebGet(UriTemplate = "/repeatssortingng", ResponseFormat= WebMessageFormat.Json)] ssortingng RepeatSsortingng(ssortingng s, int times); 

Alors votre code

 public ssortingng RepeatSsortingng(ssortingng s, int times) { ssortingng result = ""; for (int i = 0; i < times; ++i) { result += s; } return result; } 

sans opérationcontract mais la page sera dérivée de l'interface afin que votre code ajax ressemble à quelque chose comme ça.

 $.ajax({ type: "GET", //to get your data from the wcf service url: "AjaxService1.svc/repeatssortingng", //you might need to add the hostname at the beginning too data: option // or { propertyname1: "John", propertyname2: "Boston" } }) .done(function() { alert( "got data" ); }); 

vous pouvez append plus d'options au $ .ajax. Vous pouvez modifier la promesse "terminé" en "réussite" qui fonctionnera lorsque l'opération sera réussie. J'ai utilisé le succès lorsque j'ai créé mes services wcf et que je devais envoyer des données avec json et les obtenir avec javascript. de toute façon, vous pouvez en lire plus ici

soyez conscient des guillemets simples et doubles lorsque vous écrivez une chaîne json ou la variable "option"

Maintenant, j'espère que cela vous aidera d'une manière ou d'une autre. À votre santé

Trois choses doivent être sockets en compte pour qu’un WCF soit appelé à partir de javascript.

  1. Le service doit être décoré avec WebInvoke / WebGet pour être accessible à partir de javascript.

  2. doit être ajouté à la configuration pour permettre les appels de script à WCF.

  3. webHttpBinding doit être utilisé pour que la WCF se comporte comme un service REST.