解讀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不支持多層節點的綁定,即服務端返回的值類似:
- public class User
- {
- [DataMember]
- public string Name { get; set; }
- [DataMember]
- public int Age { get; set; }
- }
- [ServiceContract]
- public interface IMyService
- {
- [OperationContract]
- [WebInvoke(UriTemplate = "User/{name}/{age}", Method = "POST",
- ResponseFormat = WebMessageFormat.Json)]
- User CreateUser(string name, string age);
雖然也是標準的JSON字符串,但是數據節點是多層次的,XTemplate + WCF無法直接讀取。所以只能在客戶端用JS的正則表達式處理,手動重新組織成XTemplate + WCF所需的JSON對象,最終轉換成:
- public User CreateUser(string name, string age)
- {
- return new User { Name = name, Age = int.Parse(age) };
- }
- public string UpdateUser(string name)
- {
- return "UPDATE...";
- }
- }