ScriptManager调用WebService注意事项
Step 1:安装ASPAJAXExtSetup.msi这个包,就不提供链接了。
Step 2:在画面上添加ScriptManger控件,控件来自于工具栏Ajax Extesions。空间内部如下。
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebService.asmx" />
</Services>
</asp:ScriptManager>
中间的路径指向的是WebService的地址。
Step 3:在配置文件中添加节点
在<System.Web>下面添加
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
Step 4:在WebService的类上添加属性[System.Web.Script.Services.ScriptService]
如:[System.Web.Script.Services.ScriptService]
public class WS: System.Web.Services.WebService {
Step 5:用JS来调用
<script type="text/javascript" language="javascript">
function sc(result) {
alert(result);
}
function fa(ex) {
alert("failure:" + ex.get_message());
}
WS.HelloWorld(sc, fa);
</script>
说明:WS对应于我们新建的WebService的类名。HelloWorld后面的空格中,最后两个参数是成功后的回调函数和失败后的回调函数。除去这两个参数后,第一个参数开始是WebService的
HelloWorld方法中所需要的入参,如果没有,就不填,此处即没有。如果HelloWorld的定义如下
.....HelloWorld(string abc)....
则调用时应该为 WS.HelloWorld("eft",sc, fa);
多参数的场合依次类推。