ajax请求wcf,Ajax调用.net WCF

实验多次,其实比较简单,只是走了不少弯路,现在总结一下,

环境: VS2015

创建.net WCF非常容易,我是使用IIS做服务支撑,直接在web application项目中添加新的WCF,

d0cef440efd0c8bcfd78942c07373118.png

2.添加一个service接口(这个可以不用,我习惯了),接口中定义需要发布的几个方法。

interface ISystemUserSvr

{

[OperationContract]

[WebGet]

List RetrieveUser();

[OperationContract]

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

List RetrieveBy(string loginId, string userName);

[OperationContract]

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

List RetrieveByObj(SystemUser user);

}

其中,第一个方法使用Get方式,其余两个使用Post方式接收参数。Post是默认的方式,这里也可以不用设置,包括Request和Response的设置都是默认值。

方法实现就简单了,直接写就可以了。这里只是举个例子

public List RetrieveUser()

{

return (new SystemUserBO()).Retrieve();

}

public List RetrieveBy(string loginId, string userName)

{

return (new SystemUserBO()).Retrieve(loginId, userName, 0, 0);

}

public List RetrieveByObj(SystemUser user)

{

return (new SystemUserBO()).Retrieve(user.LoginId, user.UserName, 0, 0);

}

web.config配置,基本不需要特别配置,使用MS配置编辑器(VS自带),注意ReaderQuotas设置就行,把最大长度都放到最大就好。

c531ac388d9a53f94aeae276090a2d96.png

客户端调用,把几种调用方式都列一下吧

Get方式,无参数

$.ajax({

contentType: 'application/json;charset=utf-8',

method: "get",

type: "get",

dataType: "json",

url: "SystemUserSvr.svc/Retrieve",

success: function (result) {

$.each(result.d, function (n, value) {

$('#ajaxResult').append(value.UserName + "

" + n);

}

);

}

});

});

Post方式,传Json字符串参数

$.ajax({

contentType: 'application/json;charset=utf-8',

method: "post",

type: "post",

data: JSON.stringify({ "LoginId": "R", "UserName": "" }),

dataType: "json",

url: "SystemUserSvr.svc/RetrieveBy",

success: function (result) {

$.each(result.d, function (n, value) {

$('#ajaxResult').append(value.UserName + "

" + n);

}

);

}

});

});

Post方式,传Json对象

$.ajax({

contentType: 'application/json;charset=utf-8',

method: "post",

type: "post",

data: JSON.stringify({ "user": { "LoginId": "R", "UserName": "王" } }),

dataType: "json",

url: "SystemUserSvr.svc/RetrieveByObj",

success: function (result) {

$.each(result.d, function (n, value) {

$('#ajaxResult').append(value.UserName + "

" + n);

}

);

}

});

Post传参最需要注意的就是那个contentType的设置, contentType: 'application/json;charset=utf-8'不能漏掉,否则,传参可能不成功。另外.net WCF 返回的数据有可能是d对象,所以在解析返回数据的时候,需要特别注意一下,这里的例子直接使用了result.d,从而获得d对象的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值