【原创经验分享】JQuery(Ajax)调用WCF服务

最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚开始入门,就没觉得多大区别啦,这次写的东西跟WebService一样,我们写了一个WCF,那当然就是要用的,要用的话,当然不能只能在.NET平台下用了,必须跨平台呀,所以,Ajax能调用,这个基本的要求就必须要实现的了,所以,本次经验分享就是写JQuery的Ajax调用WCF的服务了。

  一、新建一个WCF,如下:

  二、然后把项目自动生成的两个例子删了,如下图:

三、然后新建一个:AjaxService.svc,如下图:

新建之后,会提示这个,选择“全是“即可,然后他就会自动更改Web.config里面的一些参数,用户Ajax跨域的,基本上就是这些了,如下图:

四:现在我们需要配置Web.config的一些参数,首先就是配置Forms身份验证,这个必须要配置,否者调用不成功,如下图:

<authentication mode="Forms" />

接着再配置一下绑定,这里,我们使用图形的方法来绑定,否则完全代码配置,会头晕的,首先在Web.config处右键,如下图:

在“绑定”处,新建绑定,如下图:

选择:webHttpBinding,如下图:

然后,确定,然后我们修改一下这个绑定的名称,不然后续如果我们越来越多WCF文件的时候,就会傻傻分不清楚了,这里我们改名为:AjaxServiceBinding,此外还需要把“crossDomainScriptAccessEnabled”设置为“true”,如下图:

接着,我们去到"服务",然后编辑一下“终结点”的配置,这里面需要修改两个地方,第一个:就是给这个终结点一个Name,我们这里就以WCF文件的名称“AjaxService”来命名,第二个就是要在“BindingConfiguration”处绑定我们刚刚配置的那个“绑定”,这样服务才能正常使用,如下图:

五、到此为止,Web.config的配置就告一段落,如果需要配置多个WCF文件,那就重复以上操作,下面,我们转到AjaxService.svc中去编写我们要运用到的方法。

首先,我们编写一个不需要传递参数的方法,全文如下图:

这里提供文字类,以免学习过程中由于代码敲错的报错影响学习效果:

//下面这个需要我们手动添加

[JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")]

//首先我们创建一个不传递参数的WCF方法,如下:

[OperationContract]

[WebGet(ResponseFormat = WebMessageFormat.Json)]

到这里,一个不需要传递参数的方法,结束,接下来,就是Ajax的调用,调用也很简单,我们先把这个WCF跑起来,看看他的服务地址是多少:

首先,右键→“浏览器 ”访问:

然后我们就看到这个,看到这个,代表我们这个WCF服务已经成功创建了(日后正式使用,发布在IIS就可以了,跟发布普通网站一样。),如下图:

好,从浏览器,我们看到他的服务地址是:http://localhost:5603/AjaxService.svc,

那么,我们就去新建一个HTML来试试看能否正常调用:

六、新建一个HTML,怎么简单怎么来,我们就弄一个button和一个js的方法,代码如下(JQuery自己引用,这里我用的是本地的):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title></title>

<script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

function fGetWCF() {

$.getJSON("http://localhost:5603/AjaxService.svc/MyFirstWCFFunction?jsoncallback=?",

function(data) {

alert(data);

var vData = JSON.stringify(data);

alert(vData);

});

}

</script>

</head>

<body>

<input type="button" name="wcf" id="wcf" value="无参数调用WCF测试" onclick="fGetWCF()" />

</body>

</html>

然后我们把页面跑起来,点击“”,就会看到弹出下面这个:

代表我们调用成功了,这个时候,我们可以暗爽一下了。

七:但是,万恶的但是出现了。嗯,没错,我们项目中经常用到的是,肯定要传参的了,不传参怎么用啊,你说是不是,所以,下面我就讲到传参的了。

万幸的是,这次我们的Web.config不需要动他了,我们只需要在新方法里面,做一些小改动即可,如下(自己比较一下,需要传参与不需要传参的区别哈):

//接下来,我们就新建一个需要传参的方法,如下:

[OperationContract]

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]

public string MySecondWCFFunction(string name)

{

string strMsg = string.Format("我的第二个WCF方法,我【{0}】调用成功啦,好开心,O(∩_∩)O哈哈~", name);

// 在此处添加操作实现

return strMsg;

}

然后HTML的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title></title>

<script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

function fGetWCF() {

$.getJSON("http://localhost:5603/AjaxService.svc/MyFirstWCFFunction?jsoncallback=?",

function(data) {

alert(data);

var vData = JSON.stringify(data);

alert(vData);

});

}

function fGetWCF2() {

$.getJSON("http://localhost:5603/AjaxService.svc/MySecondWCFFunction?jsoncallback=?", {

name: ‘南宫萧尘‘

},

function(data) {

alert(data);

var vData = JSON.stringify(data);

alert(vData);

});

}

</script>

</head>

<body>

<input type="button" name="wcf" id="wcf" value="无参数调用WCF测试" onclick="fGetWCF()" />

<input type="button" name="wcf" id="wcf" value="有参数调用WCF测试" onclick="fGetWCF2()" />

</body>

</html>

到这里,就大功告成啦,接下来的东西,就由大家自己去展开拓展了,本次经验分享到此结束。

(本人无偿分享经验,有偿接单制作APP(基于MUI,HTML5+Webservice)和中小型管理系统(基于EasyUI,asp.net,例如项目管理,中介管理,公司内部管理系统、农家乐系统等。),有需要可以联系我。);

作者:南宫萧尘

E-mail:[email protected]

QQ:314791147

日期:2016-05-16

时间: 2024-11-06 09:29:46

【原创经验分享】JQuery(Ajax)调用WCF服务的相关文章

用jQuery的Ajax调用WCF服务编程心得

这两天在写基于WCF服务的后台框架,过程中遇到了一些挫折,经过努力全部解决了,在此分享给大家,使用的工具是Visual Studio 2013. 该后台需要支持通过json来传递和接收数据. 首先,说说搭建过程. 第一步:创建WCF服务应用程序项目WCF. 第二步,创建服务使用的数据类 using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Sch

MSCRM 通过Ajax调用WCF服务

Call WCF Service from Dynamics CRM using AJAX A couple of days back, I had one of my ex-colleagues call me regarding a problem he had been facing when making jQuery AJAX calls to JSON WCF Services from Dynamics CRM. I had encountered this same proble

JQuery Ajax调用WCF实例以及遇到的问题

1.遇到的最多的问题就是跨域问题,这个时间需要我们添加如下代码解决跨域的问题 第一步:在服务类加Attribute [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 第二步:在构造函数中添加 if (WebOperationContext.Current != null) { WebOperationContext.Current.OutgoingRe

实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法

废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="POST",RequestFormat=WebMessageFormat.Js

ajax内调用WCF服务

WCF可以当作WebService一样被调用,在html内通过ajax调用WCF服务的方法如下: 1.新建一个WCF服务的网站项目: 2.在项目内增加一个新项:启用了ajax的WCF服务: 3.在对应的XXService.svc.cs文件内增加方法.例: [OperationContract] [WebGet] public void DoWork() { // 在此处添加操作实现 return; } 4.调用方法上必须引用[OperationContract].[WebGet]特性,否则会调用

ajax调用WebServices服务方法和传参调用WebServices注意事项

先演示下ajax是如何调用WebServices中的方法    1.新建一个页面default.aspx,一个Web服务    在页面中引用jQuery文件. <script src="../Scripts/jquery-1.4.1.js" type="text/javascript"></script> web服务里给Helloworld方法里加个参数 using System; using System.Collections.Gener

实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="GET",RequestFormat=WebMessageFormat.Json, Resp

jquery或者JavaScript调用WCF服务的方法

/****************************************************************** * Copyright (C): 一心堂集团 * CLR版本: 4.0.30319.18063 * 命名空间名称: WcfService1 * 文件名: IJoonService * GUID1: b7bd3ab3-3668-4727-9416-f9845da207e1 创建人:尹明能 * 创建时间: 2014-9-24 13:13:09 ***********

jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是"application/json", (3)data传递的数据必须是严格的json数据,如"{'a':'aa','b':'bb'}",而且参数必须和静态方法的参数一 一对应 (4)aspx的后台方法返回的数据默认形式是"{'d':'返回的内容'}",所