通过asp.net ajax来调用ASMX时,只需要将ASMX地址在ScriptManager上注册一下,具体如下:
1.创建ASMX,给WebService手动添加ScriptService属性,或取消注消ScriptService,代码如下:
- [WebService(Namespace = "http://tempuri.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [System.Web.Script.Services.ScriptService]
- public class HelloWebService : System.Web.Services.WebService
- {
- [WebMethod]
- public String HelloWorld(String name)
- {
- return String.Format("Hello {0}", name);
- }
- }
2.client前端DOM代码:
- <asp:ScriptManager ID="ScriptManagerDemo" runat="server">
- <Services>
- <asp:ServiceReference Path="HelloWebService.asmx" />
- </Services>
- </asp:ScriptManager>
- <input id="btnCallWS" type="button" value="CallWS"
- onclick="return btnCallWS_onclick()" />
3.client前端js代码:
- function btnCallWS_onclick() {
- HelloWebService.HelloWorld("彭金华", onSuccess);
- }
- function onSuccess(result)
- {
- alert(result);
- }
4.开始测试。
个人点评:
i. 给ASMX类添加ScriptService属性后,此ASMX便可以被前端asp.net ajax调用;
ii. 将ASMX的URL在ScriptManager控件上注册,主要目的是为了添加js引用,如上述示例中的;
<script src="HelloWebService.asmx/jsdebug" type="text/javascript"></script>
iii. 在HelloWebService.asmx/jsdebug引用中,包括自动生成的代理对象和代码原型方法,如上述示例中;
HelloWebService.HelloWorld (name,onSuccess,onFailed,userContext);
iv. 如果是WebApplication,在调用时需要加相应的命名空间。
本文转自 彭金华 51CTO博客,原文链接:http://blog.51cto.com/pengjh/596480