解读XTemplate + WCF读取功能

本文向大家介绍XTemplate + WCF,可能好多人还不了解XTemplate + WCF,没有关系,看完本文你肯定有不少收获,希望本文能教会你XTemplate + WCF相关东西。

1.服务端返回时,必须按以下格式返回:

stcCallback1001({...})其中stcCallback1001中的1001是自动生成的,如果是分页提交的话,每再请求一次1001会变成1002,1003...类推#t#

2.ExtJs官方的示例中虽然ScriptTagProxy的例子并不少,但是就是没有XTemplate+ScriptTagProxy跨域读取的单一功能示例,下面给一个XTemplate + WCF跨域读取数据的示例服务端WCF的处理。

这里与上一篇http://www.cnblogs.com/yjmyzz/archive/2008/09/10/1288399.html (ExtJs学习笔记(22)-XTemplate + WCF 打造无刷新数据分页)相比,多了一个参数callBack,同时返回类型改为Stream,返回方法的处理参考了老张的http://www.cnblogs.com/jillzhang/archive/2008/07/17/1245458.html(再说ExtJs与WCF之间的跨域访问)一文这里要注意的是:

尝试了多次,发现XTemplate不支持多层节点的绑定,即服务端返回的值类似:

 
 
 
  1. public class User  
  2. {  
  3. [DataMember]  
  4. public string Name { get; set; }  
  5. [DataMember]  
  6. public int Age { get; set; }  
  7. }  
  8. [ServiceContract]  
  9. public interface IMyService  
  10. {  
  11. [OperationContract]  
  12. [WebInvoke(UriTemplate = "User/{name}/{age}"Method = "POST",   
  13. ResponseFormat = WebMessageFormat.Json)]  
  14. User CreateUser(string name, string age);  

虽然也是标准的JSON字符串,但是数据节点是多层次的,XTemplate + WCF无法直接读取。所以只能在客户端用JS的正则表达式处理,手动重新组织成XTemplate + WCF所需的JSON对象,最终转换成:

 
 
 
  1. public User CreateUser(string name, string age)  
  2. {  
  3. return new User { Name = nameAge = int.Parse(age) };  
  4. }  
  5.  
  6. public string UpdateUser(string name)  
  7. {  
  8. return "UPDATE...";  
  9. }  
THE END