Программирование >>  Программирование с использованием ajax 

1 ... 234 235 236 [ 237 ] 238 239 240 ... 396


13. Внутри функции pageLoad вызовите принадлежащие прокси-объекту методы set def aultSucceededCallback и set defaultFailedCallback для указания того, что в случае успешного или неудачного выполнения асинхронного вызова Web-службы должны вызываться функции helloSucceed и helloFailed:

<script type= text/javascript > var helloService;

function pageLoad0 { helloService = new HelloService ();

helloService.set defaultSucceededCallback(helloSucceed); helloService.set defaultFailedCallback(helloFailed);

function helloSucceed (result) { var d = document.getElementByldCresult ) ; d.innerHTML = result;

function helloFailed(error, userContext, methodName) { }

function callService() { var 1 = document.getElementByld( input ); helloService.Greeting (Lvalue) ;

</script>

14. Добавьте функцию callService, использующую прокси-переменную hello для вызова предоставляемой Web-службой операции Greeting, как показано в приведенном ниже коде. Для отправки значения из поля ввода доступ к нему получается с помощью принадлежащей объекту document функции getElementByld. Под input подразумевается то имя, которое было присвоено этому полю ввода:

<script type= text/javascript > var helloService;

function pageLoad0 { helloService = new HelloService ();

helloService.set defaultSucceededCallback(helloSucceed); helloService.set defaultFailedCallback(helloFailed);

function helloSucceed(result) { var d = document.getElementByld( result ); d.innerHTML = result;

function helloFailed(error, userContext, methodName) { }

function callService () { var 1 = document. getElementByld ( input ) ; helloService.Greeting(1.value);

</script>

15. Укажите, что функция callService должна вызываться щелчком на кнопке Invoke Service. Для обеспечения ее вызова назначьте buttonel событие onclick так, как показано ниже:

<input id= buttonl type= button value= Invoke Service... onclick= callService0; / >

16. Запустите Web-страницу, введите имя в текстовом элементе управления и вызовите Web-службу, щелкнув на кнопке.



Описание полученных результатов

Создание службы WCF, поддерживающей возможности AJAX, приводит к добавлению в web. conf ig следующего конфигурационного раздела. Элемент enableWebScript в его подразделе <behaviors> снабжает Web-службу поддержкой JSON, благодаря которой Web-служба приобретает возможность напрямую получать и возвращать объекты JSON, которые оптимально подходят для клиентов JavaScript:

<system.serviceModel> <behaviors> <endpointBehaviors>

<behavior name= HelloServiceAspNetAjaxBehavior > <enableWebScript />

</behavior> </endpointBehaviors> </behaviors>

<serviceHostingEnvironment aspNetCompatibilityEnabled= true /> <services>

<service name= HelloService > <endpoint address= behaviorConfiguration= HelloServiceAspNetA]axBehavior binding= webHttpBinding contract= HelloService />

</service> </services> </system.serviceModel>

Внутри ASPX-страницы Web-служба конфигурируется с помощью свойства Services элемента управления ScriptManager. В приведенном примере служба была назначена с использованием специального редактора - ServiceReference Collection Editor. Этот редактор добавляет в ScriptManager элементы Services, содержащие элементы ServiceReference, которые ссылаются на Web-службу с помощью свойства Path:

<asp:ScriptManager ID= ScriptManagerl runat= server > <Services>

<asp:ServiceReference Path= HelloService.svc /> </Services>

</asp:ScriptManager>

При наличии клиентского сценария Web-служба вызывается асинхронно. Здесь она вызывается обращением к методу Greeting и получает ту строку, которая была определена в операции Greeting:

helloService.Greeting(1.value) ;

Результат возвращается тоже асинхронно. За тот метод, который должен вызываться после завершения Web-службой своей операции, отвечает метод setde fault SucceededCallback. В случае возврата Web-службой неудачного результата за вызываемый метод отвечает set defaultFailedCallback:

helloService.set defaultSucceededCallback(helloSucceed) ; helloService.set defaultFailedCallback(helloFailed) ;

Благодаря использованию методов setdef aultSucceedCallback и setdefault FailedCallback, назначенные им функции будут вызываться при каждом удачном и неудачном завершении Web-службой ее операции, какая бы из ее операций не вызывалась. Вместо применения этих стандартных методов можно еще назначать функции для успешного и неудачного завершения прямо вызову Web-службы. В рассматриваемом примере Web-служба предоставляет операцию Greeting (). Функция Greeting () прокси-объекта отправляет Web-службе запрос на получение приветствия (Greeting).



Вместо простых входных параметров этой Web-службе могут передаваться и непосредственно сами функции helloSucceed и helloFailed, как показано ниже:

helloService.Greeting (Lvalue, helloSucceed, helloFailed, null);

Такой подход предоставляет возможность создавать разные функции для успешного и неудачного завершения в зависимости от вызываемой операции.

Расширяющие элементы управления

Технология ASP.NET AJAX предлагает замечательные преимущества в плане расширения существующих элементов управления. В частности, в ее составе предоставляется отдельный каркас для создания новых расширяющих элементов управления; никаких заготовленных расширяющих элементов управления в ней первоначально нет. Однако в наборе ASP.NET AJAX Control Toolkit таковых имеется довольно много. Поэтому в настоящем разделе пример основан на использовании именно этого набора.

Лццическое занятие ВыЗОВ Web-СЛужбы

1. Загрузите набор ASP.NET AJAX Control Toolkit, упакованный в файл AjaxControl Toolkit-Framework3.5-NoSource.zip, со страницы www.asp.net/ajax/ downloads, сохраните его в каком-нибудь каталоге на своей системе и распакуйте.

2. Откройте созданный ранее Web-сайт AJAXWebsite в Visual Studio 2008.

8. В окне Toolbox (Панель управления) щелкните правой кнопкой мыши на пустой области, выберите в контекстном меню, которое появится после этого, пункт Add Tab (Добавить вкладку), чтобы создать новую категорию, а затем присвойте это новой категории имя AJAX Control Toolkit.

4. Щелкните правой кнопкой мыши на содержимом новой категории и выберите в контекстном меню пункт Choose Items (Выбрать элементы). После этого появится диалоговое окно Choose Toolbox Items (Выбор элементов для окна элементов управления). Щелкните в этом окне на кнопке Browse (Обзор) и выберите сборку AjaxControlToolkit. dll (она находится в каталоге SampleWebsite/bin/ того Zip-архива, который вы должны были распаковать в первом шаге).

5. После этого в новой категории внутри окна Toolbox появятся расширяющие элементы управления.

6. Добавьте в файл web.config элемент ajaxToolkit tagPrefix, ссылающийся на сборку AjaxControlToolkit:

<pages> <controls>

<add tagPrefix= asp namespace= System.Web.UI

assembly= System.Web.Extensions, Version=3.5.0.0, Culture=neutral,

PublicKeyToken=31BF3856AD364E35 /> <add tagPrefix= asp namespace= System.Web.UI.WebControls

assembly= System.Web.Extensions, Version=3.5.0.0, Culture=neutral,

PublicKeyToken-31BF3856AD364E35 /> <add namespace= AjaxControlToolkit asseinbly= AjeucControlToolkit tagPrefix= aj axToolki t /> </controls> </pages>



1 ... 234 235 236 [ 237 ] 238 239 240 ... 396

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика