现在,异步的很流行,运用JS在不刷新页面的情况下,悄悄地去后台偷资料,这是一个及其让人兴奋地事情,同时,在具体操作上,Framework3.5也给我们提供了一个很优秀的平台,让我们可以轻松自如的控制AJAX,但是,自带的UpdatePanel并不能完全的处理所有的问题,前台的JS和后台的C#代码的交互性并不是很好,往往前台希望后台给予反应的时候,后台并不知道,这是非常令人恼火的,比如TextBox的TextChanged事件,所以,就有了AJAX+WebService这种模式,通过JS代码,直接向已经编写好的Web服务索取所需要的信息,这种主动地索要,比被动的期望后台反应要好得多,现在我就举个向后台索要数据的例子:
1.右键你的网站,然后添加Web服务(asmx后缀名),然后你就会获得一个WebService的基础代码
using System; using System.Collections; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Linq; /// <summary> ///WebService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 //[System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { public WebService() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } }
然后,你需要的是把[System.Web.Script.Services.ScriptService]前方的//去掉,然后你就可以使得你的Web服务对于JS代码有了相应的支持。然后添加ScriptManager控件,向程序中添加Web服务的申明。
<asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="~/WebService.asmx" /> </Services> </asp:ScriptManager>
现在,所有工作都做好了,前台和服务都有了相应的支持,来吧,让我们写点JS代码来测试我们所有的努力:
function CallMethod() { WebService.HelloWorld(SucceededCallback); } function SucceededCallback(result) { alert(result); }
只要执行CallMethod()就可以在Alert框中显示Hello World了
OK,回家洗洗睡