分享

js 和wcf 交换

 A_POST 2013-06-13

JSON进阶五-JS和WCF的交互


首先,我说一下如何写一个JSON传递形式调用AJAX FOR WCF服务(我这里使用JQuery的ajax为例):
  1. $.ajax({
  2.             type: 'post',
  3.             url: '/TdxGridExample/Wcf/Service.svc/Add', //WCF的URL,/Add是指定该WCF的Add方法
  4.             contentType: 'text/json',
  5.             data: ’{"x":1,"y":2}‘,
  6.             success: function(msg) {
  7.                 alert(msg);
  8.             }
  9.         });
  10. 注:contentType:类型必须设置为text/json,而不是'text/xml' 或 'text/html'

    data,必须是json形式字符串:并且要对应后台WCF参数名:

    WCF代码:
    1. [OperationContract]
    2.     [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/Add", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    3.     public int Add(int x, int y) {
    4.         return x + y;
    5.     }
    复制代码
    {"x":1,"y":2} 中的x对应Add方法中的第一个参数,而y则对应第二个参数:

    例2,关于WCF对象类型参数:

    js代码:
    1. function Speak() {
    2.             var pople = { p: { name: '张三', sex: 1, birth: JSON2.strToDate('2000-11-11','yyyy-MM-dd')} };
    3.             $.ajax({
    4.                 type: 'post',
    5.                 url: '/TdxGridExample/Wcf/Service.svc/Speak',
    6.                 contentType: 'text/json',
    7.                 data: JSON2.stringify(pople),
    8.                 success: function(msg) {
    9.                     alert(msg);
    10.                 }
    11.             });
    12.         }
    复制代码
    注: wcf的日期类型必须是UTC日期形式的字符串类型, 我在JSON2.js(
    附件: 你需要登录才可以下载或查看附件。没有账号? 注册
    ) 里扩展了

    JSON2.dateFormat('UTC日期格式的字符串,例如:/Date(1304179200000+0800)/','日期格式,例如:yyyy-MM-dd');

    JSON2.strToDate('2009-11-11','yyyy-MM-dd');

    互相转换的方法。

    { p: { name: '张三', sex: 1, birth: JSON2.strToDate('2000-11-11','yyyy-MM-dd')} }

    p 代表下例WCF的Speak方法中参数,

    而name,sex,birth 对应People类中的属性,大小写必须相符。

    wcf代码:
    1. [ServiceContract(Namespace = "")]
    2. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    3. public class Service
    4. {
    5.     [OperationContract]
    6.     [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/Add", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    7.     public int Add(int x, int y)
    8.     {
    9.         return x + y;
    10.     }
    11.     [OperationContract]
    12.     [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/Speak", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    13.     public string Speak(People p)
    14.     {
    15.         string sexCN = p.sex == 1 ? "男" : "女";
    16.         return "我叫" + p.name + "," + sexCN + "性,出生于" + p.birth.ToString("yyyy-MM-dd");
    17.     }
    18. }
    19. [DataContract]
    20. public class People {
    21.     [DataMember]
    22.     public string name;
    23.     [DataMember]
    24.     public byte sex;
    25.     [DataMember]
    26.     public DateTime birth;
    27. }
    复制代码
    注:People必须添加序列化标记

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多