php 调用 wcf,jQuery+ajax调用WCF服务步骤详解

这次给大家带来jQuery+ajax调用WCF服务步骤详解,jQuery+ajax调用WCF服务的注意事项有哪些,下面就是实战案例,一起来看一下。

本文实例讲述了jQuery实现ajax调用WCF服务的方法。分享给大家供大家参考,具体如下:

关于AJAX调用WCF服务分为跨域和不跨域两种方式,今天咱们先介绍下不跨域下的调用方法。DEMO是在VS2008写的.

经过测试与研究,发现AJAX调用WCF服务必须满足以下条件

1.wcf的通讯方式必须使用webHttpBinding

2.必须设置节点的值

3.服务的实现必须添加标记[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

4.方法前面必须添加如下标记[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]

5.ajax方法中传递的参数名称必须和wcf服务中提供的参数方法名称一致

以下是本人写的代码,标记颜色的是需要注意的地方

服务器端配置文件代码

服务器端代码[ServiceContract]

public interface IService1

{

[OperationContract]

string GetData(int value);

[OperationContract]

City GetDataUsingDataContract(City composite);

[OperationContract]

List GetList();

[OperationContract]

List GetListData(List list);

}

// 使用下面示例中说明的数据约定将复合类型添加到服务操作。

[DataContract]

public class City

{

int seq = 0;

string cityID;

string ctiyName;

[DataMember]

public string CityID

{

get

{

return cityID;

}

set

{

cityID=value;

}

}

[DataMember]

public string CityName

{

get { return ctiyName; }

set { ctiyName = value; }

}

[DataMember]

public int Seq

{

get

{ return seq; }

set

{ seq = value; }

}

}

实现代码[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class Service1 : IService1

{

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

public string GetData(int value)

{

return string.Format("You entered: {0}", value);

}

#region IService1 成员

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]

public City GetDataUsingDataContract(City composite)

{

City c = new City();

c.CityID = composite.CityID;

c.CityName = composite.CityName;

c.Seq = composite.Seq;

return c;

}

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]

public List GetList()

{

List list = new List();

City cc = new City();

cc.CityID = "1";

cc.CityName="北京";

cc.Seq = 3;

list.Add(cc);

City cc1 = new City();

cc1.CityID = "2";

cc1.CityName = "上海";

cc1.Seq = 4;

list.Add(cc1);

return list;

}

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]

public List GetListData(List list)

{

return list;

}

#endregion

}

客户端调用代码

//参数为整数的方法

function fn1()

{

$.ajax({

url: "http://localhost:12079/Service1.svc/GetData",

type: "POST",

contentType: "text/json",

data: '{"value":2}',

dataType: "json",

success: function(returnValue) {

alert(returnValue);

},

error: function() {

alert('error');

}

});

}

//参数为实体类的方法

function fn2() {

$.ajax({

url: "http://localhost:12079/Service1.svc/GetDataUsingDataContract",

type: "POST",

contentType: "application/json",

data: '{"CityID":1,"CityName":"北京","Seq":"3"}',

dataType: "json",

success: function(returnValue) {

alert(returnValue.CityID + ' ' + returnValue.CityName + "--" + returnValue.Seq);

},

error: function() {

alert('error');

}

});

}

//返回值为类集合的方法

function fn3() {

$.ajax({

url: "http://localhost:12079/Service1.svc/GetList",

type: "POST",

contentType: "application/json",

dataType: "json",

success: function(returnValue) {

for (var i = 0; i < returnValue.length; i++) {

alert(returnValue[i].CityID + ' ' + returnValue[i].CityName+'---'+returnValue[i].Seq);

}

},

error: function() {

alert('error');

}

});

}

function fn4() {

$.ajax({

url: "http://localhost:12079/Service1.svc/GetListData",

type: "POST",

contentType: "application/json",

data: '[{"CityID":1,"CityName":"北京","Seq":"3"},{"CityID":3,"CityName":"上海","Seq":"3"}]',

dataType: "json",

success: function(returnValue) {

for (var i = 0; i < returnValue.length; i++) {

alert(returnValue[i].CityID + ' ' + returnValue[i].CityName + '---' + returnValue[i].Seq);

}

},

error: function() {

alert('error');

}

});

}

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值