解讀XTemplate + WCF讀取功能
本文向大家介紹XTemplate + WCF,可能好多人還不了解XTemplate + WCF,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你XTemplate + WCF相關(guān)東西。
1.服務(wù)端返回時(shí),必須按以下格式返回:
stcCallback1001({...})其中stcCallback1001中的1001是自動(dòng)生成的,如果是分頁(yè)提交的話,每再請(qǐng)求一次1001會(huì)變成1002,1003...類推#t#
2.ExtJs官方的示例中雖然ScriptTagProxy的例子并不少,但是就是沒有XTemplate+ScriptTagProxy跨域讀取的單一功能示例,下面給一個(gè)XTemplate + WCF跨域讀取數(shù)據(jù)的示例服務(wù)端WCF的處理。
這里與上一篇http://www.cnblogs.com/yjmyzz/archive/2008/09/10/1288399.html (ExtJs學(xué)習(xí)筆記(22)-XTemplate + WCF 打造無刷新數(shù)據(jù)分頁(yè))相比,多了一個(gè)參數(shù)callBack,同時(shí)返回類型改為Stream,返回方法的處理參考了老張的http://www.cnblogs.com/jillzhang/archive/2008/07/17/1245458.html(再說ExtJs與WCF之間的跨域訪問)一文這里要注意的是:
嘗試了多次,發(fā)現(xiàn)XTemplate不支持多層節(jié)點(diǎn)的綁定,即服務(wù)端返回的值類似:
- 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);
雖然也是標(biāo)準(zhǔn)的JSON字符串,但是數(shù)據(jù)節(jié)點(diǎn)是多層次的,XTemplate + WCF無法直接讀取。所以只能在客戶端用JS的正則表達(dá)式處理,手動(dòng)重新組織成XTemplate + WCF所需的JSON對(duì)象,最終轉(zhuǎn)換成:
- public User CreateUser(string name, string age)
- {
- return new User { Name = name, Age = int.Parse(age) };
- }
- public string UpdateUser(string name)
- {
- return "UPDATE...";
- }
- }