Разместите на своей странице элемент управления 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, как показано ниже:
function queryWebService() {
MyServices.MyService.SayHello('Bobby',
function(result, userContext) {
alert('Web-service response: ' + result);
}, function(result) {
alert('Error!');
});
}
ОБНОВЛЕНИЕ
Если вы хотите использовать веб-сервис, просто отправляя HTTP-запросы GET, вы можете сделать следующее:
Украсить свой веб-метод с помощью 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 к вашему веб-сервису, как показано ниже (в примере используется * 1033).* jQuery.ajax ):
$.ajax({
url: "/MyService.asmx/SayHello?name=Bobby",
success: function(transport) {
alert('Web-service response: ' + transport.responseText);
}
});
Надеюсь, это поможет вам.