从jQuery调用一个简单的WCF服务

我有一个非常简单的WCF服务叫做pilltrkr.svc。 我试图通过以下代码从jQuery调用此服务:

var jsondata = JSON.stringify(); $.ajax({ type: "POST", async: false, url: './pilltrakr.svc/DoWork/', contentType: "application/json; charset=utf-8", data: jsondata, dataType: "json", success: function (msg) { alert(msg); }, error: function (XMLHttpRequest, textStatus, errorThrown) { // alert(XMLHttpRequest.status); // alert(XMLHttpRequest.responseText); } }); 

我在本地做这个(所以使用localhost)。 DoWork只返回一个字符串。 当我调用此函数时,我得到一个http:// localhost:57400 / pilltrakr / pilltrakr.svc / DoWork / 404 Not Found

如何调用我的WCF服务? 我尝试了几种不同的变体(经过研究)。 我能够使用代码隐藏方法(客户端)来调用此服务。 我确信这是一件非常容易的事情。 请指教。

更多代码 –

似乎Stack上的每个post都包含了服务的接口和实际类,所以我也把它们放在这里,以防万一我有些遗漏:

接口:

 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; using System.Web; namespace serviceContract { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "Ipilltrakr" in both code and config file together. [ServiceContract] public interface Ipilltrakr { [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] string DoWork(); [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] int addUser(string userName, string userPhone, string userEmail, string userPwd, string acctType); } } 

类:

 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using pillboxObjects; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; namespace serviceContract { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "pilltrakr" in code, svc and config file together. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class pilltrakr : Ipilltrakr { string Ipilltrakr.DoWork() { return "got here"; } int Ipilltrakr.addUser(string userName, string userPhone, string userEmail, string userPwd, string acctType) { userAccount ua = new userAccount(); int uId; ua.userName = userName; ua.userPhone = userPhone; ua.userEmail = userEmail; ua.userPwd = userPwd; ua.userCreateDate = DateTime.Now; ua.userAccountType = acctType; uId = ua.add(); return uId; } } } 

网络配置:

                                             

可能有点晚了,但几年前我写了一些关于从jQuery调用WCF的博客文章。 这也包括故障处理 – 许多文章都忽略了这一点。

第一部分和第二部分 。

HTH

伊恩

我想出了如何最终从jQuery调用我的简单WCF服务。 我在阅读此链接后找到了一些源代码:

http://www.west-wind.com/weblog/posts/2009/Sep/15/Making-jQuery-calls-to-WCFASMX-with-a-ServiceProxy-Client 。 此链接不提供源,但它是另一个引用此链接的页面。

无论如何,我下载了代码并开始比较我的代码与通过jQuery调用WCF服务的这个工作项目。 我发现我的web.config文件太复杂了,所以我把它简短了。 然后我也意识到我的方法不公开。 所以我把它们公之于众,然后经过几次调整(即取出命名空间)后,页面开始返回我试图返回的简单字符串。

                       

我在谷歌找到的,可能会帮助你。

 $(document).ready(function() { $("#sayHelloButton").click(function(event){ $.ajax({ type: "POST", url: "dummyWebsevice.svc/HelloToYou", data: "{'name': '" + $('#name').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { AjaxSucceeded(msg); }, error: AjaxFailed }); }); }); function AjaxSucceeded(result) { alert(result.d); } function AjaxFailed(result) { alert(result.status + ' ' + result.statusText); } [WebMethod()] public static string sayHello() { return "hello "; }