Asp.net mvc framework
Шрифт:
<script type="text/javascript">
function GetTime {
$.get("Home/GetTime", null, function(result) {
$('#timeText').text('Bpeмя на сервере: ' + result);
}, "text")
}
</script>
Сравните JavaScript-реализацию без вспомогательных библиотек с 20 строками и jQuery с шестью. Разница очевидна: использование jQuery не требует ни организации поддержки всех браузеров, ни обработки получения результата и состояния запроса. Все это низкоуровневое взаимодействие jQuery берет на себя. В приведенном примере использована функция jQuery $.get ($ — это синоним
? строка с адресом запроса;
? null — как значение данных, передаваемых на сервер;
? функция обратного вызова, которая будет вызвана в случае завершения запроса;
? строковый параметр со значением "text", определяющий тип данных ожидаемого результата запроса (в данном случае — обычный текст).
Очевидно, что использование jQuery способно существенно сократить время, требующееся на создание клиентского кода, в том числе для реализации Ajax-функционала.
MVC Framework содержит все необходимое для поддержки разработчиков в их стремлении делать современные веб-проекты с использованием технологий Ajax. Включенная во Framework библиотека jQuery позволяет работать с клиентским кодом и JavaScript и гораздо проще организовывать Ajax-запросы. Встроенные средства MVC Framework и AJAX.NET позволяют вывести работу с Ajax на новый уровень абстракции, который позволяет меньше заботиться о написании JavaScript и дает возможность разработчику сосредоточиться на решении задачи вместо того, чтобы организовывать низкоуровневые взаимодействия между разметкой и асинхронными запросами к серверу.
Библиотека jQuery
jQuery — это сторонняя для Visual Studio JavaScript-библиотека, которую разработал Джон Ресиг, евангелист организации Mozilla Foundation, которая выпускает популярный браузер Firefox. Библиотека jQuery была выпущена в начале 2006 года и очень быстро завоевала популярность среди разработчиков в связи со своей простотой и в то же время чрезвычайно сильными возможностями. Ее основное назначение — это упрощенная работа с DOM-элементами документа. Библиотека так построена, что в JavaScript стало возможным использовать для выборки и работы с элементами HTML-страницы селекторы, соответствующие CSS3-селекторам. Это позволяет значительно упростить работу с HTML, создание анимации и динамического изменения разметки.
Большей частью своей популярности jQuery обязана расширяемости. В связи с тем, что это библиотека поддерживает плагины, написание которых не представляет собой труда, за короткое время jQuery обзавелась огромным количеством дополнительных расширений, которые могут быть применены в самых разнообразных случаях. На данный момент насчитываются сотни плагинов для jQuery, и едва ли не ежедневно появляются новые. В связи с тем, что написание такого плагина — элементарное в jQuery дело, создать его может любой желающий, расширив функционал библиотеки под собственные нужды.
Кроме работы с DOM, библиотека jQuery имеет встроенные средства для упрощения работы с Ajax. jQuery берет на себя всю работу по унификации доступа к функционалу Ajax в разнообразных браузерах и предлагает разработчику несколько своих полезных функций. В отличие от вспомогательных Ajax-методов MVC Framework, работа с Ajax в jQuery не может обходиться без написания JavaScript-кода.
jQuery API
В этой главе мы уже рассмотрели некоторые функции jQuery
и пример использования, который продемонстрировал, насколько упрощает жизнь разработчиков библиотека jQuery, благодаря которой отпадает потребность писать сопутствующий код, не относящийся непосредственно к решению задачи.Здесь мы рассмотрим все функции и события Ajax, имеющиеся в библиотеке и составляющие API jQuery по работе с асинхронными запросами. В табл. 7.2 приведен список функций Ajax-подсистемы в jQuery.
Функции для работы с Ajax
jQuery.ajax
Функция предназначена для организации Ajax-запросов и представляет собой самый активный элемент jQuery API, но в то же время самый низкоуровневый. jQuery.ajax принимает один-единственный параметр — структуру данных, которая описывает все, что необходимо для организации асинхронного запроса. Структура данных может содержать следующие поля:
? async — булево значение, определяющее, будет ли запрос асинхронным. По умолчанию async=true;
? beforeSend — определяет функцию, которая будет вызвана перед отправкой асинхронного запроса. Этой функции передается единственный параметр текущий объект XMLHttpRequest;
? cache — позволяет управлять кэшированием страниц, по умолчанию установлено cache=true;
? complete — определяет функцию, которая вызывается в момент завершения запроса, в том числе в случае неудачного запроса. В функцию передается два параметра: текущий объект XMLHttpRequest и строка, которая указывает статус завершения запроса;
? contentType — определяет строковое значение типа данных запроса (HTTP-заголовок content-type). По умолчанию значение устанавливается в application/x-www-form-urlencoded;
? data — данные, представленные объектом или строкой, которые должны быть отправлены на сервер вместе с запросом;
? dataFilter — определяет функцию, которая вызывается для полученных в результате запроса данных. Подразумевается, что данная функция проведет проверку данных и приведет их в безопасный для использования на стороне клиента вид. Функция принимает два параметра: собственно принятые с сервера данные и строковое значение типа данных;
? dataType — строка, определяющая тип данных, который ожидается в результате запроса. В зависимости от некоторых условий по умолчанию значение этого параметра устанавливается в "xml" или "html";
? error — определяет функцию, которая будет вызвана в случае возникновения какой-либо ошибки при выполнении асинхронного запроса. Функция принимает три параметра: текущий объект XMLHttpRequest, строку с описанием типа ошибки и опциональный объект с описанием исключения, если оно было вызвано;
? global — булево значение, которое определяет, должно ли выполнение этого запроса быть глобальным, что приводит к реагированию на него функций, или вызов не должен вызывать глобальные события. По умолчанию global=true;
? ifModified — булево значение, которое указывает, что запрос должен считаться только тогда, когда возвращенные данные отличаются с момента прошлого запроса. По умолчанию ifModified=false;
? password — строка, содержащая пароль, который будет использован в случае, когда производится запрос с обязательной аутентификацией;