将ScriptManager 控件放在您的页面上并添加对您的.asmx 服务的引用:
<asp:ScriptManager ID="myManager" runat="server">
<Services>
<asp:ServiceReference Path="~/MyService.asmx" />
</Services>
</asp:ScriptManager>
在您的网络服务的代码隐藏中声明您的网络方法(注意ScriptService 属性):
namespace MyServices
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string SayHello(name)
{
return "Hello, " + name;
}
}
}
现在您可以通过 Javascript 使用 Web 服务,如下所示:
function queryWebService() {
MyServices.MyService.SayHello('Bobby',
function(result, userContext) {
alert('Web-service response: ' + result);
}, function(result) {
alert('Error!');
});
}
更新
如果您想通过简单地发送 HTTP GET 请求来使用 Web 服务,那么您可以执行以下操作:
使用ScriptMethod 属性装饰您的网络方法:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string SayHello(name)
{
return "Hello, " + name;
}
注意UseHttpGet 属性设置为True。您可能还需要修改web.config 文件以允许这种交互:
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
现在您可以向您的网络服务发出一个简单的 HTTP GET 请求,如下所示(示例使用jQuery.ajax):
$.ajax({
url: "/MyService.asmx/SayHello?name=Bobby",
success: function(transport) {
alert('Web-service response: ' + transport.responseText);
}
});
希望这会对你有所帮助。