使用JQuery进行WCF通信的学习记录

先架设一个wcf服务,然后,需要住的是在对应的协议上添加上:

 

        [OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
ForTestData DoTest(ForTestData testData);

    public class ForTestData
    {
        public ForTestData(string Name,int Age,List<string> Shoes)
        {
            this.Name = Name;
            this.Age = Age;
            this.Shoes = Shoes;
        }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public int Age { get; set; }
        [DataMember]
        public List<string> Shoes { get; set; }
    }
标注红色的两句很重要,分别表示开放该协议,以及说明该协议方法的接受参数和返回参数。这里我是用json的。
当然为了,让这两个起作用,需要进行相关配置,写个serviceBehavior让其能enablewebscript,这里就不多说了。
接下来就是前台的jquery的ajax应用了。这里需要注意的是

 

$.ajax({
            url: url,    //这里要写的是你开放ajax服务的地址,注意是开放ajax的那个endpoint的那个地址,有时候会有多个endpoint以用以分离不同的请求方式。同时在后面要跟上你要调用的操作名称,如:/service/ser.svc/dotest

            data: json,

    //这个json数据可以经过json2.js将JavaScript的对象处理成json数据,或者直接输入json数据,对于这个案例也就是要求最后的格式要形如{testData:{Name:"Tracy",Age:12,Shoes:["Nike","Adidas"]}},如果写数据有困难可以使用这个小软件jsonview

    //使用这样的格式做为参数的时候一定要注意名字的统一,比如这里的testData,Name,Age,Shoes,都是和服务端的定义的名字强对应的,如果有一些不同,json数据就无法成功传输了。
            type: "POST",
            processData: false,
            contentType: "application/json",
            timeout: 10000,
            dataType: "text",  // not "json" we'll parse
            success: function (res) {
                    //成功后的函数调用
                    },

            error: function (xhr) {

                      //错误的函数调用

                 });

OK了。其他好像就没有什么问题了。基本要注意的就是这些了。

 

还有最重要的一点,返回的数据一定要和定义的完全一致。这点我感觉很纳闷,不知道是不是我搞错了。

意思就是,你如果返回的

subClass绝对不可以用parentClass代替。这样使得代码的灵活性下降很多。你如果这么写了,导致回传的数据格式和定义的(即开放出去的)不一样,导致ajax操作失败。

 

public class subClass:parentClass

{

  ...............................

}

转载于:https://www.cnblogs.com/JosephLiu/archive/2010/02/15/1668395.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值