Я хотел бы ответить на вопрос напрямую.
У меня есть WebMethod
, сидящий в SomePage.aspx
файле:
[WebMethod]
public static String DoSomething(String shiftName)
{
return shiftName+" hi there";
}
Вопрос: Как сделатья называю этот веб-метод? Поскольку это HTTP, ответ на HTTP POST к серверу:
POST http://localhost:53638/SomePage.aspx/DoSomething HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: qps-ploc,en-US;q=0.5
Accept-Encoding: gzip, deflate
Host: localhost:53638
Connection: Keep-Alive
Content-Length: 23
Content-Type: application/json;charset=utf-8
{'shiftName':'contoso'}
критически важноОбратите внимание:
- HTTP-метод:
POST
(GET
не будет работать) вы указываете имя вашего методана странице aspx как SomePage.aspx / [MethodName] .В этом случае:
SomePage.aspx / DoSomething
вы передаете параметры метода как JSON.Этот метод имеет один строковый параметр: shiftName
.Это означает, что я сконструировал JSON:
{'shiftName':'contoso'}
с типом содержимого JSON запроса, необходимо указать заголовок запроса Content-Type
:
ContentType: application/json;charset=utf-8
Учитывая, что в моем примере WebMethod просто берет предоставленный текст, добавляет hi there
и возвращает эту строку, ответ от веб-сервера:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 24
Connection: Close
{"d":"contoso hi there"}
Где тело ответа HTTPтакже строка JSON с одним свойством d
.Я не знаю, откуда они взяли d
, но это так.
Вот как вы называете WebMethod, используя http (например, язык ассемблера, COM, C #, Java, Delphi).
Самый распространенный вопрос - как вы звоните с клиента , используя jQuery.
$.ajax({
type: "POST",
url: 'Catalogo.aspx/checaItem',
data: "{ id : 'teste' }",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
Примечание : любой кодвыпущен в общественное достояние.Указание авторства не требуется.