加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ajax调用.net WCF

发布时间:2020-12-16 02:44:14 所属栏目:百科 来源:网络整理
导读:实验多次,其实比较简单,只是走了不少弯路,现在总结一下, 环境: VS2015 创建.net WCF非常容易,我是使用IIS做服务支撑,直接在web application项目中添加新的WCF, 2.添加一个service接口(这个可以不用,我习惯了),接口中定义需要发布的几个方法。 in
实验多次,其实比较简单,只是走了不少弯路,现在总结一下,
环境: VS2015

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

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

interface ISystemUserSvr
    {
        [OperationContract]
        [WebGet]
        List<SystemUser> RetrieveUser();

        [OperationContract]
        [WebInvoke(RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        List<SystemUser> RetrieveBy(string loginId,string userName);

        [OperationContract]
        [WebInvoke(RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        List<SystemUser> RetrieveByObj(SystemUser user);

    }

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

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

    public List<SystemUser> RetrieveUser()
        {
            return (new SystemUserBO()).Retrieve(); 
        }
    
        public List<SystemUser> RetrieveBy(string loginId,string userName)
        {
    
            return (new SystemUserBO()).Retrieve(loginId,userName,0);
        }
    
        public List<SystemUser> RetrieveByObj(SystemUser user)
        {
            return (new SystemUserBO()).Retrieve(user.LoginId,user.UserName,0);
        }
  2. web.config配置,基本不需要特别配置,使用MS配置编辑器(VS自带),注意ReaderQuotas设置就行,把最大长度都放到最大就好。

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

    • 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 + "<p>" + n);
                  }
                     );
              }
          });
      
      });
  • Post方式,传Json字符串参数

    $.ajax({
                contentType: ‘application/json;charset=utf-8‘,method: "post",type: "post",data: JSON.stringify({ "LoginId": "R","UserName": "" }),url: "SystemUserSvr.svc/RetrieveBy",success: function (result) {
                    $.each(result.d,value) {
    
                        $(‘#ajaxResult‘).append(value.UserName + "<p>" + n);
                    }
                       );
                }
            });
    
        });
  • Post方式,传Json对象

    $.ajax({
                contentType: ‘application/json;charset=utf-8‘,data: JSON.stringify({ "user": { "LoginId": "R","UserName": "王" } }),url: "SystemUserSvr.svc/RetrieveByObj",value) {
    
                        $(‘#ajaxResult‘).append(value.UserName + "<p>" + n);
                    }
                       );
                }
            });

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读