|
Программирование >> Программирование с использованием ajax
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>
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |