Ajax与Wcf交互-JSON2010-07-21 cnblogs jillzhang在WCF的序列化中有DataContractJsonSerializer的格式化器,这就使得WCF相比传统的Xml Web Serice多了一种输入输出的编码格式:JSON.本文将介绍如何使用JSON实现Ajax与WCF之间的数据交互.JSON的全称是JavaScript Object Notation,是专门用于适应Ajax和Restful而出现的取代xml的编码格式.相比xml而言,它更适合javascript,第一步: 在VS2008中创建一个.Net framework 3.5的网站项目,命名为AjaxWcfJson,不用多说,不会创建的可以参考上一篇文章Ajax与WCF交互-WCF之美,第二步: 在网站项目中添加一个启用了Ajax的WCF服务: WcfJsonService.svc,将其中代码更改为如下:[DataContract] public class Person { [DataMember] public string Name { get; set; } [DataMember] public string Address { get; set;} } [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class WcfJsonService { static List<Person> list = new List<Person>();
// 添加 [WebGet] 属性以使用 HTTP GET [OperationContract] [WebInvoke(RequestFormat = WebMessageFormat.Json)] public bool CreatePerson(Person p) { // 在此处添加操作实现 foreach (Person person in list) { if (p.Name ==person.Name) { return false; } } list.Add(p); Trace.WriteLine("-----------------------------------------"); foreach (Person person in list) { Trace.WriteLine("Name:" + person.Name + ",Address:" + person.Address); } Trace.WriteLine("-----------------------------------------"); return true; }
[OperationContract] [WebInvoke(ResponseFormat=WebMessageFormat.Json)] public Person GetPerson(string name) { foreach(Person p in list) { if(p.Name == name) { return p; } } return new Person(); } // 在此处添加更多操作并使用 [OperationContract] 标记它们 }