代码改变世界

Asp.Net Ajax 2.0 调用WebService 中的方法

2008-11-17 13:54  蓝之风  阅读(843)  评论(1编辑  收藏  举报

Asp.Net ajax 2.0 调用WebService 非常方便,很多细节都被封装好了,可以和asp.net无缝连接起来。Asp.Net Ajax2.0调用WebServiece的步骤如下:

1、新建一个WebService

2、将这个WebService类加上[ScriptService]Attribute

3、给需要暴露的方法前加上[WebMethod]Attribute

4、在需要调用WebService的页面添加

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="AjaxServices.asmx" />
    </Services>
</asp:ScriptManager>
控件,并在控件中引用需要调用的webService名称

5、写简单的js代码,在调用Webservice的js方法中需要使用如下格式:

[NameSpace].[ClassName].[Method]

6、写回调函数,并在回调函数中处理webservice方法返回的结果;

下面通过一个实例来说明Asp.net Ajax2.0如何调用WebService:

1、WebService中的代码:

 

Code

 

这里暴露了两个方法我们只用后面的那个方法:

public List<RedStarNetLibModel.Pager.Employee> GetEmployee()此方法返回的是人员的一个泛型列表

2、在页面上调用WebService的代码:

 

Code

 

在页面上放置了一个ScriptManager空间并引入WebService的地址:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="AjaxServices.asmx" />
    </Services>
</asp:ScriptManager>

再放一个div和<input type="button" value="加载数据" id="btngetdata" />当点击按钮的时候将数据加载到div中,方法:

$(function(){
        $("#btngetdata").click(GetEmployees);
    })

使用jQuery将按钮绑定到id="btngetdata"按钮上当点击按钮时就调用GetEmployees()方法;

方法:

function GetEmployees()
{       
        WebAppTest.Ajax.AjaxServices.GetEmployee(onSecess,onError,onTimeout);

}

这里调用Webservice方法,提供js和Webservice的交互,也是整个代码的核心,onSecces,是一个调用成功后的回调函数,所有的现实逻辑都在这里处理,onError,是一个调用失败的回调函数,onTimeout,是一个调用超时的回调函数。在onSecces中

function onSecess(result)
    {
        var s=String.format("<table class=\"tblClass\" ><tr><th>EmployeeId</th><th>FirstName</th><th>LastName</th><th>BirthDate</th></tr>");
        for(var i=0;i<result.length;i++)
        {
            s+=String.format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td>",result[i].EmployeeID,result[i].FirstName,result[i].LastName,result[i].BirthDate);
        }
        s+="</table>";
        $("#emp").html(s);
    }
我们将取到的数据格式化成Table然后通过jQuery的方法将数据显示到页面上。

onError(result)和onTimeout(result)将调用该方法时出现的异常和超时信息alert出来。看看运行的效果:

gg

总结:使用Asp.net Ajax2.0 调用WebService的方法非常简单,关键步骤是创建WebService--->暴露WebService所在的类和外界调用的方法-->js通过C#中的FullName的方式来调用WebService中的方法-->在回调方法中处理返回的数据并显示给用户。