今天看了webCast的一个 张义先老师的VS2008新特性之AJAX介绍视屏,中间讲到“ajax调用webservice中的方法”,当时张老师没有将这个Demo做出来,看完之后摸索了好久才搞明白是怎么回事,现在将经验分享给大家,希望对各位.net学习者有所帮助。
目的:在前台就用AJAX调用WebService中的方法
代码如下:
WEBSERVICE代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
/// <summary>
///HelloService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class HelloService : System.Web.Services.WebService {
public HelloService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
[ScriptMethod]
public string HelloWorld() {
return "abcdefg";
}
}
aspx代码:
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/HelloService.asmx" />
</Services>
</asp:ScriptManager>
<input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
</div>
</form>
<script language="javascript" type="text/javascript">
function Button1_onclick() {
HelloService.HelloWorld(onGetSuccess);
}
//正是在上面张老师犯错了。在webservice中可以看到,HelloWorld方法并没有参数,此处的参数为,当调用服务器事件成功后执行的函数
//正是由于HelloWorld方法返回的是一个字符串的值,所以此方法有STR参数保存返回的值。
function onGetSuccess(str) {
alert(str);
}
</script>
--------- THE END --------------------
---------HFUTWYY原作----------------