使用ASP.NET AJAX异步调用Web Service

详细说明请参见陈黎夫的博客: http://www.cnblogs.com/dflying/archive/2007/06/05/771490.html

总结:想要使用ASP.NET AJAX在客户端JavaScript中异步调用服务器端Web Service,我们需要:

  1. 为Web Service类或需要暴露给客户端的Web Service方法添加[ScriptService]属性;
  2. 为Web Service中需要暴露给客户端的方法添加[WebMethod]属性;
  3. 在页面中的ScriptManager控件中添加对该Web Service的引用;
  4. 在客户端使用如下JavaScript语法调用该Web Service:
    [NameSpace].[ClassName].[MethodName](param1, param2 ......, callbackFunction)
  5. 为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。


<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Untitled Page</title>
<script language="javascript" type="text/javascript">
// <!CDATA[

function Button1_onclick() {
    
var name = $get("txtName").value;
    WebService.SayHello(name,onSayHelloSucceeded);
}


function onSayHelloSucceeded(result) {
    $get(
"DivResult").innerHTML = result;
}



// ]]>
</script>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:ScriptManager id="ScriptManager1" runat="server">
            
<Services>
                
<asp:ServiceReference Path="WebService.asmx" />
            
</Services>
        
</asp:ScriptManager>
        
<input id="txtName" type="text" />
        
<input id="btnName" type="button" value="Say Hello" onclick="return Button1_onclick()" />
        
<div id="DivResult">
        
</div>
    
</div>
    
</form>
</body>
</html>

$get(): ASP.NET AJAX 提供的对javascript函数document.getElementById()的简写形式

WebService.asmx.cs:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;


/// <summary>
/// Summary description for WebService
/// </summary>

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService()]
public class WebService : System.Web.Services.WebService {

    
public WebService () {}

    [WebMethod]
    
public string SayHello(string name) {
        
return string.Format("Hello,{0}! Now it is {1}.",name,DateTime.Now);
    }
  
}

posted on 2008-07-03 12:59  王丹小筑  阅读(215)  评论(0)    收藏  举报

导航