Вызов методов WebService из Javascript

Давненько читал, что можно вызывать методы вебсервиса, практически напрямую, т.е. не используя сторонние библиотеки для создания ajax запросов к вебсервису.

Естественно я имею ввиду MS Web Services

При обращении в веб сервису с добавлением параметра /js или /jsdebug – получаем javascript, содержащий все функции вебсервиса, реализующие обратный ajax вызов

Для теста создал простой вебсервис, и чтобы он мог возвращать javascript отметил его атрибутом [ScriptService] 

После этого добавил на страницу скрипт вебсервиса
<script src="Helper.asmx/jsdebug" type="text/javascript"></script>

Загруженный скрипт зарегистрирует в сценариях новое пространство имен под названием сборки текущего проекта

В зарегистрированное пространство имен будет добавлена функция/объект одноименная названию класса веб сервиса, и у этого объекта есть все функции веб сервиса.

Загруженный скрипт выглядит примерно так:

Type.registerNamespace('SimpleCMS');

SimpleCMS.Helper=
function
() {

...

SimpleCMS.Helper.prototype={

...

GetWhoInCart:
function(entityIds,pageModuleIds,succeededCallback, failedCallback, userContext) {
...
И как уже стало видно – у нас появилась возможность вызвать функцию сервиса из яваскрипта:
SimpleCMS.Helper.GetWhoInCart(entityIds, pageModuleIds, function (list) { /*обработать результат*/ }
Кстати – добавить вебсервис на страницу можно через ScriptManager:
ScriptManager.GetCurrent(Page).Services.Add(new ServiceReference("~/Helper.asmx"));
В разметке:
<asp:ScriptManager runat="server">
<Services>
      <asp:ServiceReference Path="~/Helper.asmx" />
   </Services>
</asp:ScriptManager>
Чем удобен данный подход? Простотой использования – достаточно вебсервис добавить на страницу, и будет нам доступ ко всем его функциям, и не нужно использовать jQuery или иные javascript фреймворки для реализации ajax-запросов



 
 

2 комментария:

  1. Откуда взята эта информация? Мне интересен первоисточник.

    ОтветитьУдалить
  2. на сколько я помню именно эту статью сам написал, т.к. названия сущностей (GetWhoInCart, SimpleCMS) из моего проекта
    а инфа по работе с MS AJAX - однозначно с MSDN )

    ОтветитьУдалить

Можете оставить свой комментарий