使用ASP.NET AJAX异步调用Web Service
详细说明请参见陈黎夫的博客: http://www.cnblogs.com/dflying/archive/2007/06/05/771490.html
<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);
}
}
总结:想要使用ASP.NET AJAX在客户端JavaScript中异步调用服务器端Web Service,我们需要:
- 为Web Service类或需要暴露给客户端的Web Service方法添加[ScriptService]属性;
- 为Web Service中需要暴露给客户端的方法添加[WebMethod]属性;
- 在页面中的ScriptManager控件中添加对该Web Service的引用;
- 在客户端使用如下JavaScript语法调用该Web Service:
[NameSpace].[ClassName].[MethodName](param1, param2 ......, callbackFunction) - 为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。
<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);
}
}本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利
This posting is provided "AS IS" with no warranties, and confers no rights.
This posting is provided "AS IS" with no warranties, and confers no rights.



浙公网安备 33010602011771号