Давненько читал, что можно вызывать методы вебсервиса, практически напрямую, т.е. не используя сторонние библиотеки для создания 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-запросов
Откуда взята эта информация? Мне интересен первоисточник.
ОтветитьУдалитьна сколько я помню именно эту статью сам написал, т.к. названия сущностей (GetWhoInCart, SimpleCMS) из моего проекта
ОтветитьУдалитьа инфа по работе с MS AJAX - однозначно с MSDN )